#loading packages
library(tidyverse)
library(readxl)
library(forcats)
library(RColorBrewer)
library(knitr)
library(kableExtra)
library(purrr)
library(lme4)
library(lmerTest)
library(emmeans)
library(gtsummary)
levels_type <- c("Ordinary", "Scientific", "Supernatural", "Fictional")
levels_country <- c("US", "Ghana", "Ecuador", "Peru")
#loading data
df_raw <- read_excel(path = "ontology_data.xlsx")
#making some modifications
df <- df_raw %>%
mutate(ont_ctry_name = case_when(
ont_ctry == 1 ~ "US",
ont_ctry == 4 ~ "Ghana",
ont_ctry == 7 ~ "Peru",
ont_ctry == 6 ~ "Ecuador",
TRUE ~ NA_character_
)) %>%
relocate(ont_ctry_name, .before = everything())
#df_sens requires sensory_vars, which is created in the custom_functions.R file
# Combine into one big df_sens
df_sens <- reduce(sensory_vars, left_join, by = "ont_subj")
# Rejoin metadata
df_sens <- df %>%
select(ont_subj, ont_ctry_name, ont_version) %>%
left_join(df_sens, by = "ont_subj")
# df_usens requires usens_vars, which is created in the custom_functions.R file
# Combine into one big df_sens
df_usens <- reduce(usens_vars, left_join, by = "ont_subj")
# Rejoin metadata
df_usens <- df %>%
select(ont_subj, ont_ctry_name, ont_version) %>%
left_join(df_usens, by = "ont_subj")
# Note that this is the data frame in which many important variables are calculated, including the consensus score
df_ext_long <- df %>%
filter(ont_ctry_name %in% c("US", "Ghana", "Ecuador", "Peru")) %>%
select(ont_ctry_name, ont_subj,
sci_ext_grm, spn_ext_dem, ord_ext_mug, sci_ext_frc, fic_ext_smn,
sci_ext_cnc, spn_ext_god, ord_ext_tbl, spn_ext_abs, fic_ext_kwk,
sci_ext_flu, spn_ext_wen, sci_ext_par, fic_ext_spd, spn_ext_okw, fic_ext_ram,
spn_ext_ysh, fic_ext_njt, spn_ext_cha, nas_ext_ron, ord_ext_taz, spn_ext_oni, nas_ext_dlp
) %>%
mutate(across(c(-ont_ctry_name, -ont_subj), as.numeric)) %>%
pivot_longer(c(-ont_ctry_name, -ont_subj), names_to = "question", values_to = "response") %>%
mutate(
response = ifelse(response == 99, 0.5, response),
question_type = recode(question,
sci_ext_grm = "Scientific",
sci_ext_frc = "Scientific",
sci_ext_cnc = "Scientific",
sci_ext_flu = "Scientific",
sci_ext_par = "Scientific",
ord_ext_mug = "Ordinary",
ord_ext_tbl = "Ordinary",
ord_ext_taz = "Ordinary",
spn_ext_god = "Supernatural",
spn_ext_dem = "Supernatural",
spn_ext_wen = "Supernatural",
spn_ext_okw = "Supernatural",
spn_ext_abs = "Supernatural",
spn_ext_ysh = "Supernatural",
spn_ext_cha = "Supernatural",
nas_ext_ron = "Supernatural",
spn_ext_oni = "Supernatural",
nas_ext_dlp = "Supernatural",
fic_ext_kwk = "Fictional",
fic_ext_smn = "Fictional",
fic_ext_spd = "Fictional",
fic_ext_ram = "Fictional",
fic_ext_njt = "Fictional"),
) %>%
filter(!is.na(response)) %>%
group_by(ont_ctry_name, question) %>%
mutate(consensus_excl_self = (sum(response, na.rm = TRUE) - response)/(n()-1),
consensus = (sum(response, na.rm = TRUE)/n())) %>%
ungroup() %>%
mutate(item_code = str_extract(question, "[^_]+$")) #extracting final 3 characters
# making long usens df
df_usens_long <- df_usens %>%
select(-ont_version) %>%
pivot_longer(c(-ont_ctry_name, -ont_subj), names_to = "usens_question", values_to = "usens_response") %>%
filter(!is.na(usens_response)) %>%
mutate(item_code = str_extract(usens_question, "[^_]+$")) #extracting final 3 characters
# making long confidence df
df_conf_long <- df %>%
filter(ont_ctry_name %in% c("US", "Ghana", "Ecuador", "Peru")) %>%
select(ont_ctry_name, ont_subj,
sci_conf.ext_grm, spn_conf.ext_dem, ord_conf.ext_mug, sci_conf.ext_gvt, fic_conf.ext_smn,
sci_conf.ext_cnc, spn_conf.ext_god, ord_conf.ext_tbl, spn_conf.ext_ghs, fic_conf.ext_hap,
sci_conf.ext_grm, spn_conf.ext_dem, ord_conf.ext_mug, sci_conf.ext_frc, fic_conf.ext_smn,
sci_conf.ext_cnc, spn_conf.ext_god, ord_conf.ext_tbl, spn_conf.ext_abs, fic_conf.ext_kwk,
sci_conf.ext_flu, spn_conf.ext_wen, ord_conf.ext_mug, sci_conf.ext_par, fic_conf.ext_spd,
sci_conf.ext_cnc, spn_conf.ext_god, ord_conf.ext_tbl, spn_conf.ext_okw, fic_conf.ext_ram,
spn_conf.ext_ysh, sci_conf.ext_par, spn_conf.ext_god, ord_conf.ext_tbl,
fic_conf.ext_njt, spn_conf.ext_cha, sci_conf.ext_cnc,
sci_conf.ext_grm, nas_conf.ext_ron, ord_conf.ext_taz, spn_conf.ext_oni,
fic_conf.ext_smn, nas_conf.ext_dlp) %>%
mutate(across(-ont_ctry_name, as.numeric)) %>%
pivot_longer(c(-ont_ctry_name, -ont_subj), names_to = "conf_question", values_to = "conf_response") %>%
filter(!is.na(conf_response)) %>%
mutate(category = recode(conf_question,
sci_conf.ext_grm = "Scientific",
sci_conf.ext_frc = "Scientific",
sci_conf.ext_cnc = "Scientific",
sci_conf.ext_flu = "Scientific",
sci_conf.ext_par = "Scientific",
sci_conf.ext_gvt = "Scientific",
ord_conf.ext_mug = "Ordinary",
ord_conf.ext_tbl = "Ordinary",
ord_conf.ext_taz = "Ordinary",
spn_conf.ext_god = "Supernatural",
spn_conf.ext_dem = "Supernatural",
spn_conf.ext_wen = "Supernatural",
spn_conf.ext_okw = "Supernatural",
spn_conf.ext_abs = "Supernatural",
spn_conf.ext_ysh = "Supernatural",
spn_conf.ext_cha = "Supernatural",
nas_conf.ext_ron = "Supernatural",
spn_conf.ext_oni = "Supernatural",
nas_conf.ext_dlp = "Supernatural",
spn_conf.ext_ghs = "Supernatural",
fic_conf.ext_kwk = "Fictional",
fic_conf.ext_smn = "Fictional",
fic_conf.ext_spd = "Fictional",
fic_conf.ext_ram = "Fictional",
fic_conf.ext_njt = "Fictional",
fic_conf.ext_hap = "Fictional"),
ont_ctry_name = factor(ont_ctry_name, levels = levels_country),
response_txt = recode(conf_response,
`0` = "Not sure",
`1` = "Somewhat sure",
`2` = "Pretty sure",
`3` = "Very sure")) %>%
mutate(item_code = str_extract(conf_question, "[^_]+$")) #extracting final 3 characters
# joining into one dataframe
df_ext_usens_conf <- left_join(
df_ext_long, df_usens_long, by = c("ont_ctry_name", "ont_subj", "item_code")
) %>%
left_join(df_conf_long, by = c("ont_ctry_name", "ont_subj", "item_code")) %>%
mutate(item_code = as.factor(item_code),
question_type = factor(question_type, levels = levels_type),
ont_ctry_name = factor(ont_ctry_name, levels = levels_country)) #making this a factor so we can do ordinal regression
# How many participants per country?
xtabs(~ ont_ctry_name, data = df)
ont_ctry_name
Ecuador Ghana Peru US
20 70 40 49
# Version of questions (version 1 or version 2) by country
xtabs(~ ont_ctry_name + ont_version, data = df)
ont_version
ont_ctry_name 1 2
Ecuador 10 10
Ghana 35 35
Peru 21 19
US 21 28
#age
df %>%
mutate(ont_age = as.numeric(ont_age)) %>%
group_by(ont_ctry_name) %>%
summarize(n = n(),
mean_age = mean(ont_age, na.rm = T),
med_age = median(ont_age, na.rm = T),
sd_age = sd(ont_age, na.rm = T),
range_age = paste0(min(ont_age, na.rm = T), " - ", max(ont_age, na.rm = T)))
#sex male = 1
xtabs(~ ont_ctry_name + ont_sex, data = df)
ont_sex
ont_ctry_name . 1 2
Ecuador 0 9 11
Ghana 0 32 38
Peru 0 25 15
US 1 26 22
#ethnicity
xtabs(~ tolower(ont_ethn) + ont_ctry_name, data = df)
ont_ctry_name
tolower(ont_ethn) Ecuador Ghana Peru US
. 0 1 0 2
a little bit of everything / caucasian/ puerto rican 0 0 0 1
ahanta 0 1 0 0
akan- fante 0 1 0 0
american - hispanic / anglo 0 0 0 1
asante/akan 0 1 0 0
asian 0 0 0 1
asian + caucasian 0 0 0 1
black 0 0 0 2
black + puerto rican 0 0 0 1
caucasian 0 0 0 22
denkyiranyi (asante) 0 1 0 0
earth inn 0 0 0 1
east indian 0 0 0 1
ekuapim 0 1 0 0
fante 0 49 0 0
fante (akromah) 0 1 0 0
fante (amosima) 0 1 0 0
fante (brenu) 0 1 0 0
fante (new ebu) 0 2 0 0
fante (otum in central region) 0 1 0 0
fantenyi 0 2 0 0
fanti 0 1 0 0
fanti (cape-coast) 0 1 0 0
fanti (egyankwa) 0 1 0 0
fanti (yamoransa) 0 1 0 0
fanti(ahanta) 0 1 0 0
hispanic 0 0 0 1
hispanic / caucasian 0 0 0 1
hispanic / native american 0 0 0 1
i am a fante. 0 1 0 0
irish 0 0 0 1
irish/scottish/caucasian 0 0 0 1
italian 0 0 0 1
italian/american 0 0 0 1
kichua 1 0 0 0
mexican american 0 0 0 1
mexican/italian 0 0 0 1
mut 0 0 0 1
n. european 0 0 0 1
northner 0 1 0 0
persian 0 0 0 1
portuguese 0 0 0 1
salvadorian 0 0 0 1
scandanavian 0 0 0 1
scottish / english 0 0 0 1
shipibo 0 0 40 0
waorani 13 0 0 0
waorani and kichua 6 0 0 0
#education
xtabs(~ tolower(ont_hied) + ont_ctry_name, data = df)
ont_ctry_name
tolower(ont_hied) Ecuador Ghana Peru US
. 1 1 0 1
0 0 1 0 0
10th grade 2 0 0 0
11th grade 5 0 0 0
12th grade 9 0 0 0
1st yr college 0 0 0 1
3 yrs college 0 0 0 1
8th grade 1 0 0 0
9th grade 1 0 0 0
abakrampa senior high school 0 1 0 0
abakrampa senior technical 0 1 0 0
abk senior high 0 1 0 0
associate 0 0 0 1
associate's 0 0 0 2
ba 1 0 0 3
ba + teaching 0 0 0 1
bacelors 0 0 0 1
bachelor of science 0 0 0 1
bachelor's 0 0 0 2
bachelors 0 0 0 3
brenu methodist school 0 1 0 0
bs 0 0 0 3
college 0 0 0 3
college grad 0 0 0 1
did not complete junior high school 0 1 0 0
doctorate 0 0 0 1
elementary 0 1 0 0
form 4 0 3 0 0
form 4 (junior secondary school) 0 1 0 0
ged 0 0 0 2
grad levels 0 0 0 1
grad school 0 0 0 1
graduate 0 0 0 1
graduated college 0 0 0 1
have not yet completed junior high school 0 1 0 0
high school 0 0 0 1
high school / some college 0 0 0 1
high school some trade school 0 0 0 1
hs 0 0 0 2
hs graduate 0 0 0 1
i have finished tertiary 0 1 0 0
j.h.s (junior high school) 0 1 0 0
jackson college of education 0 1 0 0
jhs 0 1 0 0
junior college 0 0 0 1
junior high 0 0 0 1
junior high school 0 11 0 0
junior high school graduate 0 2 0 0
masters 0 0 0 2
mba 0 0 0 1
methodist jhs 0 4 0 0
methodist senior high (new ebu) 0 1 0 0
methodists junior and senior high (new ebu) 0 1 0 0
methodists junior secondary school, class 6 0 1 0 0
methodists primary 0 1 0 0
middle school 0 1 0 0
new ebu da jhs 0 1 0 0
new ebu methodist middle school (1971) 0 1 0 0
nursing training 0 1 0 0
post-grad 0 0 0 1
primary 0 1 0 0
roman catholic girls 0 1 0 0
s.h.s 0 1 0 0
secondary school 0 1 0 0
self- hs 0 0 0 1
seminary school 0 1 0 0
senior high schol 0 1 0 0
senior high school 0 5 0 0
senior high school graduate 0 3 0 0
shs 0 3 0 0
shs- technical school 0 1 0 0
sm college 0 0 0 1
some college 0 0 0 4
stan 7 0 1 0 0
takoradi senior secondary school 0 1 0 0
uneducated 0 5 0 0
uneducated, did not attend school 0 1 0 0
university of cape coast 0 2 0 0
#"importance of god "God plays a very important role in my life (strongly disagree to strongly agree)
xtabs(~ ont_ctry_name + as.numeric(ont_imgd), data = df)
as.numeric(ont_imgd)
ont_ctry_name -2 -1 0 1 2
Ecuador 6 1 10 2 0
Ghana 0 1 0 13 56
Peru 0 0 3 2 34
US 15 9 5 5 13
#church attendance
xtabs(~ tolower(ont_chfq) + ont_ctry_name, data = df)
ont_ctry_name
tolower(ont_chfq) Ecuador Ghana Peru US
. 0 1 1 2
0 15 0 1 5
1x/week 0 0 0 2
2 times a week. 0 0 1 0
2 times in a week 0 1 0 0
2x/week 0 0 0 1
3 times a month 0 0 1 0
3 times a week 0 3 2 0
3 times in a week 0 1 0 0
3 to 4 times a year 0 0 1 0
4 times a month 0 1 1 0
4 times a week 0 2 15 0
4 times in a week 0 1 0 0
4,6, 8 times a month 0 0 1 0
5 times a week 0 2 1 0
5, 6 to 7 times a year 0 0 1 0
7 times a week 0 1 0 0
8 times a month 0 0 1 0
a few times in a year 0 1 0 0
a lot of times 0 1 0 0
abundant life 0 0 0 1
cathedral of faith, jubilee church on the hill, catholic churches 0 0 0 1
catholic 0 0 0 1
every day 0 1 0 0
every saturday 0 1 0 0
every sunday 0 8 0 2
every sunday, once a week 0 1 0 0
every week 0 2 0 0
everyday 0 3 0 0
everyday in new eden 0 0 1 0
fante comment 0 3 0 0
from time to time 0 0 2 0
i don't usually go 0 2 0 0
i don't usually go. 0 1 0 0
i go to jesus divine temple. people popularly call it mountain. 0 1 0 0
infrequent 3 0 0 0
infrequent but used to preach a few years ago 1 0 0 0
it's been long 0 1 0 0
like five times in a year 0 1 0 0
lutheran prince of peace 0 0 0 1
many times 0 1 0 0
many times. 0 1 0 0
many times. every week unless i can't and then i rest. 0 1 0 0
mdata 0 0 0 1
n/a 0 0 0 12
na 0 0 0 15
not always but i go 3 times a week 0 0 1 0
not anymore 0 0 0 1
not often 0 0 0 1
now i don't go to church. 0 1 0 0
often 0 3 0 0
once a month 0 0 1 0
once a month or two months 0 1 0 0
once a week 0 0 3 0
once a year 0 0 2 0
once every 2 years 0 1 0 0
once every week 0 1 0 0
once every weekend 1 0 0 0
once in a week 0 1 0 0
once in every 2 months 0 1 0 0
once in every 2 years 0 1 0 0
sunday weekly 0 1 0 0
three times 0 1 0 0
three times in a week. 0 1 0 0
thrice in a week 0 1 0 0
twice a week 0 1 2 0
twice in every week 0 1 0 0
twice in every week. 0 1 0 0
two times a week 0 1 0 0
very often 0 3 0 0
very often. every sunday 0 1 0 0
virtually every sunday 0 1 0 0
weekly 0 2 0 2
weekly catholic 0 0 0 1
when i am in school, i go to church every day 0 1 0 0
yes, once a month 0 0 1 0
you don't go at all. 0 1 0 0
# Do you think you are richer or poorer than most of the people in your community? (much poorer - much richer)
xtabs(~ ont_ctry_name + as.numeric(ont_ses), data = df)
as.numeric(ont_ses)
ont_ctry_name -2 -1 0 1 2
Ecuador 0 10 9 1 0
Ghana 4 17 15 31 3
Peru 13 6 18 1 0
US 2 13 23 8 1
# Do you feel you can afford to buy things you need, like clothing and shoes? (no/yes)
xtabs(~ ont_ctry_name + as.numeric(ont_affr), data = df)
as.numeric(ont_affr)
ont_ctry_name 0 1
Ecuador 20 0
Ghana 23 47
Peru 30 9
US 5 43
The goal here is to combine confidence and existence scores. The confidence graph above shows people’s confidence ratings regardless of whether they said the object existed or not. So, I will combine them this way: - if they said it doesn’t exist -1 - if they said it does exist 1 - if they said they don’t know *0
This way, a person who said they don’t know if it exists and a person who said it did or didn’t but said they were “not sure” will both get a score of 0. A person who is “very sure” it doesn’t exist will get a score of -3 and a person who is “very sure” it does exist will get a score of 3.
# making new column of existence response directions
df_ext_usens_conf <- df_ext_usens_conf %>%
mutate(ext_dir = case_when(
response == 1 ~ 1,
response == 0 ~ -1,
response == 0.5 ~ 0,
TRUE ~ response),
conf_dir = conf_response*ext_dir,
conf_dir_text = case_when(
conf_dir == -3 ~ "Very sure doesn't exist",
conf_dir == -2 ~ "Pretty sure doesn't exist",
conf_dir == -1 ~ "Somewhat sure doesn't exist",
conf_dir == 0 ~ "Not sure",
conf_dir == 1 ~ "Somewhat sure exists",
conf_dir == 2 ~ "Pretty sure exists",
conf_dir == 3 ~ "Very sure exists"),
conf_dir_text = factor(conf_dir_text,
levels = c("Very sure doesn't exist", "Pretty sure doesn't exist", "Somewhat sure doesn't exist", "Not sure", "Somewhat sure exists", "Pretty sure exists", "Very sure exists"))
)
Graphing Figure 1
conf_colors <- (RColorBrewer::brewer.pal(7, "RdYlBu"))
# Create stacked bar plot
df_ext_usens_conf %>%
filter(!is.na(conf_dir_text)) %>%
mutate(category = factor(category, levels = c("Ordinary", "Scientific", "Supernatural", "Fictional"))) %>%
ggplot(aes(x = category, fill = conf_dir_text)) +
geom_bar(position = "fill") + # Stacked proportions
# geom_text(stat = "count", aes(label = after_stat(count)),
# position = position_fill(vjust = 0.5),
# size = 6, color = "white") +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_fill_manual(values = conf_colors, drop = FALSE) +
theme_bw() +
labs(
x = "Category of Items",
y = "Proportion of Responses",
fill = "Confidence x Existence",
title = "Confidence x Existence by Category and Field Site"
) +
theme(axis.text.x = element_text(size = 15, angle = -35, vjust = 1, hjust = 0),
axis.title.x = element_text(size = 18),
axis.title.y = element_text(size = 18),
axis.text.y = element_text(size = 16),
plot.title = element_text(size = 25),
strip.text.x = element_text(size = 18),
legend.text = element_text(size = 16),
legend.title = element_text(size =18)) +
facet_wrap(~ ont_ctry_name, ncol = 4) # Separate plots for each country
Models predicting confidence x existence scores by category with separate regressions for each country. The pairwise contrasts here showing ordinary vs. supernatural and scientific vs. supernatural are what make up Table 2. Full results are reported in Appendix C.
# 1 regression per country (4 total) where response is predicted by category
# US
m.us <- lmer(conf_dir ~ question_type + (1|ont_subj), data = filter(df_ext_usens_conf, ont_ctry_name == "US"))
summary(m.us)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: filter(df_ext_usens_conf, ont_ctry_name == "US")
REML criterion at convergence: 623.3
Scaled residuals:
Min 1Q Median 3Q Max
-2.90811 -0.26981 0.03141 0.27885 2.87739
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.2108 0.4591
Residual 2.4359 1.5607
Number of obs: 164, groups: ont_subj, 49
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 2.9592 0.2324 157.8701 12.733 < 2e-16 ***
question_typeScientific -0.1837 0.3153 117.5352 -0.583 0.561
question_typeSupernatural -2.2480 0.3228 120.0307 -6.965 1.89e-10 ***
question_typeFictional -4.5905 0.4127 137.1724 -11.124 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) qstn_typSc qstn_typSp
qstn_typScn -0.678
qstn_typSpr -0.663 0.488
qstn_typFct -0.518 0.382 0.376
##pairwise contrasts
emm.us <- emmeans(m.us, ~ question_type)
contrast(emm.us, method = "pairwise", adjust = "none")
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 0.184 0.315 113 0.583 0.5614
Ordinary - Supernatural 2.248 0.323 116 6.962 <.0001
Ordinary - Fictional 4.590 0.415 134 11.069 <.0001
Scientific - Supernatural 2.064 0.323 116 6.393 <.0001
Scientific - Fictional 4.407 0.415 134 10.626 <.0001
Supernatural - Fictional 2.343 0.420 132 5.584 <.0001
Degrees-of-freedom method: kenward-roger
# Ghana
m.ghana <- lmer(conf_dir ~ question_type + (1|ont_subj), data = filter(df_ext_usens_conf, ont_ctry_name == "Ghana"))
summary(m.ghana)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: filter(df_ext_usens_conf, ont_ctry_name == "Ghana")
REML criterion at convergence: 987.1
Scaled residuals:
Min 1Q Median 3Q Max
-4.3477 -0.4544 0.2218 0.5644 1.8879
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.1388 0.3726
Residual 0.8719 0.9338
Number of obs: 348, groups: ont_subj, 70
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 2.7571 0.1202 319.5095 22.945 <2e-16 ***
question_typeScientific -0.3438 0.1452 279.7692 -2.368 0.0186 *
question_typeSupernatural -0.2845 0.1445 279.0482 -1.969 0.0500 *
question_typeFictional -1.4857 0.1578 274.6964 -9.413 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) qstn_typSc qstn_typSp
qstn_typScn -0.714
qstn_typSpr -0.717 0.588
qstn_typFct -0.657 0.544 0.546
##pairwise contrasts
emm.ghana <- emmeans(m.ghana, ~ question_type)
contrast(emm.ghana, method = "pairwise", adjust = "none")
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 0.3438 0.145 280 2.368 0.0186
Ordinary - Supernatural 0.2845 0.145 279 1.968 0.0501
Ordinary - Fictional 1.4857 0.158 275 9.413 <.0001
Scientific - Supernatural -0.0593 0.132 297 -0.450 0.6531
Scientific - Fictional 1.1419 0.145 280 7.865 <.0001
Supernatural - Fictional 1.2012 0.145 279 8.309 <.0001
Degrees-of-freedom method: kenward-roger
# Ecuador
m.ecuador <- lmer(conf_dir ~ question_type + (1|ont_subj), data = filter(df_ext_usens_conf, ont_ctry_name == "Ecuador"))
summary(m.ecuador)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: filter(df_ext_usens_conf, ont_ctry_name == "Ecuador")
REML criterion at convergence: 283.7
Scaled residuals:
Min 1Q Median 3Q Max
-2.7683 -0.5352 0.2693 0.6102 2.0039
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.2237 0.4730
Residual 0.9541 0.9768
Number of obs: 96, groups: ont_subj, 20
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 2.6500 0.2427 79.9977 10.920 < 2e-16 ***
question_typeScientific -0.5152 0.2855 74.0151 -1.804 0.0753 .
question_typeSupernatural -0.4465 0.2871 73.5156 -1.555 0.1242
question_typeFictional -1.5790 0.3134 72.8521 -5.038 3.3e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) qstn_typSc qstn_typSp
qstn_typScn -0.688
qstn_typSpr -0.685 0.574
qstn_typFct -0.627 0.532 0.531
##pairwise contrasts
emm.ecuador <- emmeans(m.ecuador, ~ question_type)
contrast(emm.ecuador, method = "pairwise", adjust = "none")
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 0.5152 0.286 74.6 1.802 0.0756
Ordinary - Supernatural 0.4465 0.287 74.1 1.553 0.1246
Ordinary - Fictional 1.5790 0.314 73.5 5.036 <.0001
Scientific - Supernatural -0.0687 0.266 78.5 -0.259 0.7965
Scientific - Fictional 1.0639 0.291 75.5 3.650 0.0005
Supernatural - Fictional 1.1325 0.292 74.3 3.878 0.0002
Degrees-of-freedom method: kenward-roger
# Peru
m.peru <- lmer(conf_dir ~ question_type + (1|ont_subj), data = filter(df_ext_usens_conf, ont_ctry_name == "Peru"))
summary(m.peru)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: filter(df_ext_usens_conf, ont_ctry_name == "Peru")
REML criterion at convergence: 640.5
Scaled residuals:
Min 1Q Median 3Q Max
-4.2673 -0.5885 0.3191 0.4445 2.6123
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.03865 0.1966
Residual 0.73159 0.8553
Number of obs: 247, groups: ont_subj, 40
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 2.7500 0.1388 239.5727 19.818 <2e-16 ***
question_typeScientific -0.1076 0.1748 208.1851 -0.615 0.539
question_typeSupernatural -0.1367 0.1563 205.0009 -0.874 0.383
question_typeFictional -2.0389 0.2115 213.8722 -9.639 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) qstn_typSc qstn_typSp
qstn_typScn -0.754
qstn_typSpr -0.843 0.669
qstn_typFct -0.623 0.497 0.553
##pairwise contrasts
emm.peru <- emmeans(m.peru, ~ question_type)
contrast(emm.peru, method = "pairwise", adjust = "none")
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 0.1076 0.175 208 0.615 0.5393
Ordinary - Supernatural 0.1367 0.156 205 0.874 0.3830
Ordinary - Fictional 2.0389 0.212 213 9.627 <.0001
Scientific - Supernatural 0.0291 0.136 210 0.214 0.8305
Scientific - Fictional 1.9313 0.197 213 9.821 <.0001
Supernatural - Fictional 1.9022 0.181 217 10.516 <.0001
Degrees-of-freedom method: kenward-roger
Model predicting confidence x existence scores by category pooling across non-US countries. These results show that when you combine all non-US country responses together, the difference between ordinary and supernatural confidence ratings are significant.
#combinging non us countries
m.non.us <- lmer(conf_dir ~ question_type + (1|ont_ctry_name/ont_subj), data = filter(df_ext_usens_conf, ont_ctry_name != "US"))
summary(m.non.us)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_ctry_name/ont_subj)
Data: filter(df_ext_usens_conf, ont_ctry_name != "US")
REML criterion at convergence: 1924
Scaled residuals:
Min 1Q Median 3Q Max
-4.3864 -0.4471 0.2510 0.5377 2.2025
Random effects:
Groups Name Variance Std.Dev.
ont_subj:ont_ctry_name (Intercept) 0.113627 0.33709
ont_ctry_name (Intercept) 0.003539 0.05949
Residual 0.844475 0.91895
Number of obs: 691, groups: ont_subj:ont_ctry_name, 130; ont_ctry_name, 3
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 2.72942 0.09344 3.60849 29.210 2.03e-05 ***
question_typeScientific -0.29739 0.10470 563.96137 -2.840 0.00467 **
question_typeSupernatural -0.23851 0.09985 550.18991 -2.389 0.01724 *
question_typeFictional -1.63053 0.11738 560.02347 -13.891 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) qstn_typSc qstn_typSp
qstn_typScn -0.664
qstn_typSpr -0.698 0.618
qstn_typFct -0.591 0.529 0.551
##pairwise contrasts
emm.non.us <- emmeans(m.non.us, ~ question_type)
contrast(emm.non.us, method = "pairwise", adjust = "none")
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 0.2974 0.1050 569 2.840 0.0047
Ordinary - Supernatural 0.2385 0.1010 564 2.373 0.0180
Ordinary - Fictional 1.6305 0.1180 565 13.874 <.0001
Scientific - Supernatural -0.0589 0.0903 590 -0.652 0.5144
Scientific - Fictional 1.3331 0.1080 573 12.292 <.0001
Supernatural - Fictional 1.3920 0.1060 561 13.190 <.0001
Degrees-of-freedom method: kenward-roger
Model predicting confidence x existence scores by category, but only for highest contrast ordinary vs. supernatural items (coffee cups & tables vs. God & demons). These results show that these highest contrasts are significantly different in the US and Ghana, but not in Ecuador and Peru (in Ecuador, our smallest sample size, there are hints that this effect might be found in future similar studies). See Appendix A for full confidence and existence ratings broken down by item, version, and country.
# US --mugs, tables, god, demons
m.mug.us <- lmer(conf_dir ~ question_type + (1|ont_subj), data = df_ext_usens_conf %>%
filter(ont_ctry_name == "US",
item_code %in% c("mug", "tbl", "dem", "god")))
summary(m.mug.us)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: df_ext_usens_conf %>% filter(ont_ctry_name == "US", item_code %in%
c("mug", "tbl", "dem", "god"))
REML criterion at convergence: 374.1
Scaled residuals:
Min 1Q Median 3Q Max
-2.09043 0.01938 0.02299 0.58511 1.29077
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.008797 0.09379
Residual 3.134276 1.77039
Number of obs: 94, groups: ont_subj, 49
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 2.9592 0.2533 91.9994 11.68 < 2e-16 ***
question_typeSupernatural -2.2481 0.3656 48.9678 -6.15 1.38e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr)
qstn_typSpr -0.691
# Ghana --mugs, tables, god, demons
m.mug.ghana <- lmer(conf_dir ~ question_type + (1|ont_subj), data = df_ext_usens_conf %>%
filter(ont_ctry_name == "Ghana",
item_code %in% c("mug", "tbl", "dem", "god")))
summary(m.mug.ghana)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: df_ext_usens_conf %>% filter(ont_ctry_name == "Ghana", item_code %in%
c("mug", "tbl", "dem", "god"))
REML criterion at convergence: 291.4
Scaled residuals:
Min 1Q Median 3Q Max
-3.3442 -0.1527 -0.0012 0.5653 1.7544
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.2286 0.4781
Residual 0.2804 0.5296
Number of obs: 140, groups: ont_subj, 70
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 2.75714 0.08527 114.84211 32.333 < 2e-16 ***
question_typeSupernatural -0.30000 0.08951 69.00000 -3.352 0.00131 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr)
qstn_typSpr -0.525
# Ecuador --mugs, tables, god, Wene
m.mug.ecuador <- lmer(conf_dir ~ question_type + (1|ont_subj), data = df_ext_usens_conf %>%
filter(ont_ctry_name == "Ecuador",
item_code %in% c("mug", "tbl", "wen", "god"))) #Wene instead of demon
summary(m.mug.ecuador)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: df_ext_usens_conf %>% filter(ont_ctry_name == "Ecuador", item_code %in%
c("mug", "tbl", "wen", "god"))
REML criterion at convergence: 106.7
Scaled residuals:
Min 1Q Median 3Q Max
-3.0684 -0.3950 0.1042 0.7610 1.1422
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.2511 0.5011
Residual 0.6754 0.8218
Number of obs: 39, groups: ont_subj, 20
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 2.6500 0.2152 34.6335 12.312 3.32e-14 ***
question_typeSupernatural -0.5397 0.2642 18.9685 -2.043 0.0552 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr)
qstn_typSpr -0.594
# Peru --mugs, tables, god, Oni Ibo
m.mug.peru <- lmer(conf_dir ~ question_type + (1|ont_subj), data = df_ext_usens_conf %>%
filter(ont_ctry_name == "Peru",
item_code %in% c("taz", "tbl", "oni", "god")))
summary(m.mug.peru)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: df_ext_usens_conf %>% filter(ont_ctry_name == "Peru", item_code %in%
c("taz", "tbl", "oni", "god"))
REML criterion at convergence: 125.4
Scaled residuals:
Min 1Q Median 3Q Max
-3.2867 0.4317 0.4317 0.4471 0.7038
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.01877 0.1370
Residual 0.25314 0.5031
Number of obs: 79, groups: ont_subj, 40
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 2.750000 0.082449 76.628610 33.354 <2e-16 ***
question_typeSupernatural -0.007738 0.113272 38.128326 -0.068 0.946
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr)
qstn_typSpr -0.678
data_long_comm <- df %>%
filter(ont_ctry_name %in% c("US", "Ghana", "Ecuador", "Peru")) %>%
select(ont_ctry_name, ont_subj,
sci_comu_grm, spn_comu_dem, ord_comu_mug, sci_comu_gvt, fic_comu_smn,
sci_comu_cnc, spn_comu_god, ord_comu_tbl, spn_comu_ghs, fic_comu_hap,
sci_comu_grm, spn_comu_dem, ord_comu_mug, sci_comu_frc, fic_comu_smn,
sci_comu_cnc, spn_comu_god, ord_comu_tbl, spn_comu_abs, fic_comu_kwk,
sci_comu_flu, spn_comu_wen, ord_comu_mug, sci_comu_par, fic_comu_spd,
sci_comu_cnc, spn_comu_god, ord_comu_tbl, spn_comu_okw, fic_comu_ram,
spn_comu_ysh, sci_comu_par, spn_comu_god, ord_comu_tbl,
fic_comu_njt, spn_comu_cha, sci_comu_cnc,
sci_comu_grm, nas_comu_ron, ord_comu_taz, spn_comu_oni,
fic_comu_smn, nas_comu_dlp) %>%
mutate(across(c(-ont_ctry_name, -ont_subj), as.numeric)) %>%
pivot_longer(c(-ont_ctry_name, -ont_subj), names_to = "question", values_to = "response") %>%
mutate(response = ifelse(response == 99, 0.5, response)) %>%
filter(!is.na(response)) %>%
mutate(category = recode(question,
sci_comu_grm = "Scientific",
sci_comu_frc = "Scientific",
sci_comu_cnc = "Scientific",
sci_comu_flu = "Scientific",
sci_comu_par = "Scientific",
sci_comu_gvt = "Scientific",
ord_comu_mug = "Ordinary",
ord_comu_tbl = "Ordinary",
ord_comu_taz = "Ordinary",
spn_comu_god = "Supernatural",
spn_comu_dem = "Supernatural",
spn_comu_wen = "Supernatural",
spn_comu_okw = "Supernatural",
spn_comu_abs = "Supernatural",
spn_comu_ysh = "Supernatural",
spn_comu_cha = "Supernatural",
nas_comu_ron = "Supernatural",
spn_comu_oni = "Supernatural",
nas_comu_dlp = "Supernatural",
spn_comu_ghs = "Supernatural",
fic_comu_kwk = "Fictional",
fic_comu_smn = "Fictional",
fic_comu_spd = "Fictional",
fic_comu_ram = "Fictional",
fic_comu_njt = "Fictional",
fic_comu_hap = "Fictional"),
response_txt = recode(response,
`0` = "No",
`1` = "Yes",
`0.5` = "IDK"),
response_txt = factor(response_txt, levels = c("No", "IDK", "Yes"))) %>%
filter(!is.na(category))
# Compute avg per category
cat_order <- data_long_comm %>%
group_by(category) %>%
summarise(m = mean(response))
# Merge avg and reorder category
data_long_comm <- data_long_comm %>%
left_join(cat_order, by = "category") %>%
mutate(category = fct_reorder(category, m))
conf_colors <- setNames(brewer.pal(3, "RdYlBu"),
c("No", "IDK", "Yes"))
# conf_colors <- setNames(c("#01665e","#5ab4ac","#8c510a"),
# c("Yes", "IDK", "No"))
# Create stacked bar plot
data_long_comm %>%
mutate(category = factor(category, levels = c("Ordinary", "Scientific", "Supernatural", "Fictional")),
ont_ctry_name = factor(ont_ctry_name, levels = levels_country)) %>%
ggplot(aes(x = category, fill = response_txt)) +
geom_bar(position = "fill") + # Stacked proportions
# geom_text(stat = "count", aes(label = after_stat(count)),
# position = position_fill(vjust = 0.5),
# size = 6, color = "white") +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_fill_manual(values = conf_colors, drop = FALSE) +
theme_bw() +
labs(
x = "Category of Items",
y = "Proportion of Responses",
fill = "Responses",
title = "Can people communicate with __? by Category and Field Site"
) +
theme(axis.text.x = element_text(size = 15, angle = -35, vjust = 1, hjust = 0),
axis.title.x = element_text(size = 18),
axis.title.y = element_text(size = 18),
axis.text.y = element_text(size = 16),
plot.title = element_text(size = 25),
strip.text.x = element_text(size = 18),
legend.text = element_text(size = 16),
legend.title = element_text(size =18)) +
facet_wrap(~ ont_ctry_name, ncol = 4) # Separate plots for each country
data_long_comm <- df %>%
filter(ont_ctry_name %in% c("US", "Ghana", "Ecuador", "Peru")) %>%
select(ont_ctry_name, ont_subj,
sci_comu_grm, spn_comu_dem, ord_comu_mug, sci_comu_gvt, fic_comu_smn,
sci_comu_cnc, spn_comu_god, ord_comu_tbl, spn_comu_ghs, fic_comu_hap,
sci_comu_grm, spn_comu_dem, ord_comu_mug, sci_comu_frc, fic_comu_smn,
sci_comu_cnc, spn_comu_god, ord_comu_tbl, spn_comu_abs, fic_comu_kwk,
sci_comu_flu, spn_comu_wen, ord_comu_mug, sci_comu_par, fic_comu_spd,
sci_comu_cnc, spn_comu_god, ord_comu_tbl, spn_comu_okw, fic_comu_ram,
spn_comu_ysh, sci_comu_par, spn_comu_god, ord_comu_tbl,
fic_comu_njt, spn_comu_cha, sci_comu_cnc,
sci_comu_grm, nas_comu_ron, ord_comu_taz, spn_comu_oni,
fic_comu_smn, nas_comu_dlp) %>%
mutate(across(c(-ont_ctry_name, -ont_subj), as.numeric)) %>%
pivot_longer(c(-ont_ctry_name, -ont_subj), names_to = "question", values_to = "response") %>%
mutate(response = ifelse(response == 99, 0.5, response)) %>%
filter(!is.na(response)) %>%
mutate(category = recode(question,
sci_comu_grm = "Scientific",
sci_comu_frc = "Scientific",
sci_comu_cnc = "Scientific",
sci_comu_flu = "Scientific",
sci_comu_par = "Scientific",
sci_comu_gvt = "Scientific",
ord_comu_mug = "Ordinary",
ord_comu_tbl = "Ordinary",
ord_comu_taz = "Ordinary",
spn_comu_god = "Supernatural",
spn_comu_dem = "Supernatural",
spn_comu_wen = "Supernatural",
spn_comu_okw = "Supernatural",
spn_comu_abs = "Supernatural",
spn_comu_ysh = "Supernatural",
spn_comu_cha = "Supernatural",
nas_comu_ron = "Supernatural",
spn_comu_oni = "Supernatural",
nas_comu_dlp = "Supernatural",
spn_comu_ghs = "Supernatural",
fic_comu_kwk = "Fictional",
fic_comu_smn = "Fictional",
fic_comu_spd = "Fictional",
fic_comu_ram = "Fictional",
fic_comu_njt = "Fictional",
fic_comu_hap = "Fictional"),
response_txt = recode(response,
`0` = "No",
`1` = "Yes",
`0.5` = "IDK"),
response_txt = factor(response_txt, levels = c("No", "IDK", "Yes"))) %>%
filter(!is.na(category))
Models predicting “Can people communicate with X?” responses by category. The pairwise contrasts from these models are reported in the manuscript under the section “Additional Questions Reflect Differences in Epistemic Frames”
# I want 1 regression per country (4 total) where response is predicted by category
# US
m.comm.us <- lmer(response ~ category + (1|ont_subj), data = filter(data_long_comm, ont_ctry_name == "US"))
summary(m.comm.us)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: response ~ category + (1 | ont_subj)
Data: filter(data_long_comm, ont_ctry_name == "US")
REML criterion at convergence: 262
Scaled residuals:
Min 1Q Median 3Q Max
-1.9138 -0.6348 -0.1107 0.6635 2.5365
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.08442 0.2905
Residual 0.12076 0.3475
Number of obs: 244, groups: ont_subj, 49
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 0.36735 0.06471 142.69707 5.677 7.4e-08 ***
categoryScientific -0.03998 0.06510 193.23170 -0.614 0.540
categoryFictional -0.10204 0.07021 191.90328 -1.453 0.148
categorySupernatural 0.28896 0.06399 193.08577 4.515 1.1e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) ctgrySc ctgryF
ctgryScntfc -0.585
catgryFctnl -0.542 0.539
ctgrySprntr -0.595 0.581 0.549
##pairwise contrasts
emm.comm.us <- emmeans(m.comm.us, ~ category)
contrast(emm.comm.us, method = "pairwise", adjust = "none")
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 0.0400 0.0651 193 0.614 0.5399
Ordinary - Fictional 0.1020 0.0702 192 1.453 0.1477
Ordinary - Supernatural -0.2890 0.0640 193 -4.515 <.0001
Scientific - Fictional 0.0621 0.0651 193 0.953 0.3417
Scientific - Supernatural -0.3289 0.0591 198 -5.564 <.0001
Fictional - Supernatural -0.3910 0.0640 193 -6.109 <.0001
Degrees-of-freedom method: kenward-roger
# Ghana
m.comm.ghana <- lmer(response ~ category + (1|ont_subj), data = filter(data_long_comm, ont_ctry_name == "Ghana"))
summary(m.comm.ghana)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: response ~ category + (1 | ont_subj)
Data: filter(data_long_comm, ont_ctry_name == "Ghana")
REML criterion at convergence: 131.2
Scaled residuals:
Min 1Q Median 3Q Max
-2.94583 -0.33207 -0.08662 0.63525 2.97487
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.006527 0.08079
Residual 0.075654 0.27505
Number of obs: 350, groups: ont_subj, 70
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 0.02143 0.03426 337.26679 0.625 0.532
categoryScientific 0.03737 0.04253 282.33502 0.879 0.380
categoryFictional 0.24286 0.04649 277.00891 5.224 3.45e-07 ***
categorySupernatural 0.78644 0.04253 282.33502 18.492 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) ctgrySc ctgryF
ctgryScntfc -0.742
catgryFctnl -0.678 0.547
ctgrySprntr -0.742 0.593 0.547
##pairwise contrasts
emm.comm.ghana <- emmeans(m.comm.ghana, ~ category)
contrast(emm.comm.ghana, method = "pairwise", adjust = "none")
contrast estimate SE df t.ratio p.value
Ordinary - Scientific -0.0374 0.0425 282 -0.879 0.3804
Ordinary - Fictional -0.2429 0.0465 277 -5.224 <.0001
Ordinary - Supernatural -0.7864 0.0425 282 -18.486 <.0001
Scientific - Fictional -0.2055 0.0425 282 -4.830 <.0001
Scientific - Supernatural -0.7491 0.0384 302 -19.501 <.0001
Fictional - Supernatural -0.5436 0.0425 282 -12.777 <.0001
Degrees-of-freedom method: kenward-roger
# Ecuador
m.comm.ecuador <- lmer(response ~ category + (1|ont_subj), data = filter(data_long_comm, ont_ctry_name == "Ecuador"))
summary(m.comm.ecuador)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: response ~ category + (1 | ont_subj)
Data: filter(data_long_comm, ont_ctry_name == "Ecuador")
REML criterion at convergence: 61.5
Scaled residuals:
Min 1Q Median 3Q Max
-2.6608 -0.2785 -0.1655 0.5305 2.9256
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.001555 0.03944
Residual 0.102169 0.31964
Number of obs: 90, groups: ont_subj, 20
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 0.05000 0.07202 85.91024 0.694 0.489
categoryScientific 0.03612 0.09295 71.44265 0.389 0.699
categoryFictional 0.78346 0.10389 71.05523 7.541 1.18e-10 ***
categorySupernatural 0.68932 0.09782 73.01647 7.047 8.52e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) ctgrySc ctgryF
ctgryScntfc -0.763
catgryFctnl -0.683 0.529
ctgrySprntr -0.725 0.562 0.503
##pairwise contrasts
emm.comm.ecuador <- emmeans(m.comm.ecuador, ~ category)
contrast(emm.comm.ecuador, method = "pairwise", adjust = "none")
contrast estimate SE df t.ratio p.value
Ordinary - Scientific -0.0361 0.0931 69.4 -0.388 0.6993
Ordinary - Fictional -0.7835 0.1040 68.9 -7.533 <.0001
Ordinary - Supernatural -0.6893 0.0981 71.1 -7.024 <.0001
Scientific - Fictional -0.7473 0.0963 71.1 -7.759 <.0001
Scientific - Supernatural -0.6532 0.0901 75.0 -7.248 <.0001
Fictional - Supernatural 0.0941 0.1010 72.1 0.931 0.3548
Degrees-of-freedom method: kenward-roger
# Peru
m.comm.peru <- lmer(response ~ category + (1|ont_subj), data = filter(data_long_comm, ont_ctry_name == "Peru"))
summary(m.comm.peru)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: response ~ category + (1 | ont_subj)
Data: filter(data_long_comm, ont_ctry_name == "Peru")
REML criterion at convergence: 245.5
Scaled residuals:
Min 1Q Median 3Q Max
-1.45840 -1.11107 -0.01983 1.14905 2.42631
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.003096 0.05564
Residual 0.147084 0.38352
Number of obs: 248, groups: ont_subj, 40
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) -3.001e-16 6.127e-02 2.433e+02 0.000 1.000
categoryScientific 1.601e-02 7.833e-02 2.090e+02 0.204 0.838
categoryFictional 4.277e-01 9.368e-02 2.145e+02 4.565 8.39e-06 ***
categorySupernatural 5.419e-01 7.010e-02 2.053e+02 7.731 4.68e-13 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) ctgrySc ctgryF
ctgryScntfc -0.766
catgryFctnl -0.641 0.502
ctgrySprntr -0.856 0.670 0.560
##pairwise contrasts
emm.comm.peru <- emmeans(m.comm.peru, ~ category)
contrast(emm.comm.peru, method = "pairwise", adjust = "none")
contrast estimate SE df t.ratio p.value
Ordinary - Scientific -0.016 0.0784 209 -0.204 0.8384
Ordinary - Fictional -0.428 0.0938 215 -4.560 <.0001
Ordinary - Supernatural -0.542 0.0701 206 -7.731 <.0001
Scientific - Fictional -0.412 0.0870 215 -4.733 <.0001
Scientific - Supernatural -0.526 0.0608 212 -8.644 <.0001
Fictional - Supernatural -0.114 0.0797 218 -1.433 0.1533
Degrees-of-freedom method: kenward-roger
data_long_spec <- df %>%
filter(ont_ctry_name %in% c("US", "Ecuador", "Peru")) %>% #question wasn't asked in ghana
select(ont_ctry_name, ont_subj,
sci_spexp_grm, spn_spexp_dem, ord_spexp_mug, sci_spexp_gvt, fic_spexp_smn,
sci_spexp_cnc, spn_spexp_god, ord_spexp_tbl, spn_spexp_ghs, fic_spexp_hap,
# sci_spexp_grm, spn_spexp_dem, ord_spexp_mug, sci_spexp_frc, fic_spexp_smn,
# sci_spexp_cnc, spn_spexp_god, ord_spexp_tbl, spn_spexp_abs, fic_spexp_kwk,
sci_spexp_flu, spn_spexp_wen, ord_spexp_mug, sci_spexp_par, fic_spexp_spd,
sci_spexp_cnc, spn_spexp_god, ord_spexp_tbl, spn_spexp_okw, fic_spexp_ram,
spn_spexp_ysh, sci_spexp_par, spn_spexp_god, ord_spexp_tbl,
fic_spexp_njt, spn_spexp_cha, sci_spexp_cnc,
sci_spexp_grm, nas_spexp_ron, ord_spexp_taz, spn_spexp_oni,
fic_spexp_smn, nas_spexp_dlp) %>%
mutate(across(c(-ont_ctry_name, -ont_subj), as.numeric)) %>%
pivot_longer(c(-ont_ctry_name, -ont_subj), names_to = "question", values_to = "response") %>%
mutate(response = ifelse(response == 99, 0.5, response)) %>%
filter(!is.na(response)) %>%
mutate(category = recode(question,
sci_spexp_grm = "Scientific",
sci_spexp_frc = "Scientific",
sci_spexp_cnc = "Scientific",
sci_spexp_flu = "Scientific",
sci_spexp_par = "Scientific",
sci_spexp_gvt = "Scientific",
ord_spexp_mug = "Ordinary",
ord_spexp_tbl = "Ordinary",
ord_spexp_taz = "Ordinary",
spn_spexp_god = "Supernatural",
spn_spexp_dem = "Supernatural",
spn_spexp_wen = "Supernatural",
spn_spexp_okw = "Supernatural",
spn_spexp_abs = "Supernatural",
spn_spexp_ysh = "Supernatural",
spn_spexp_cha = "Supernatural",
nas_spexp_ron = "Supernatural",
spn_spexp_oni = "Supernatural",
nas_spexp_dlp = "Supernatural",
spn_spexp_ghs = "Supernatural",
fic_spexp_kwk = "Fictional",
fic_spexp_smn = "Fictional",
fic_spexp_spd = "Fictional",
fic_spexp_ram = "Fictional",
fic_spexp_njt = "Fictional",
fic_spexp_hap = "Fictional"),
response_txt = recode(response,
`0` = "Anyone",
`1` = "Only specific people",
`0.5` = "IDK"),
response_txt = factor(response_txt, levels = c("Anyone", "IDK", "Only specific people"))) %>%
filter(!is.na(category))
# Compute avg per category
cat_order <- data_long_spec %>%
group_by(category) %>%
summarise(m = mean(response))
# Merge avg and reorder category
data_long_spec <- data_long_spec %>%
left_join(cat_order, by = "category") %>%
mutate(category = fct_reorder(category, m))
conf_colors <- setNames(brewer.pal(3, "RdYlBu"),
c("Anyone", "IDK", "Only specific people"))
# conf_colors <- setNames(brewer.pal(3, "Set2"),
# c("Anyone", "IDK", "Only specific people"))
# Create stacked bar plot
data_long_spec %>%
mutate(category = factor(category, levels = c("Ordinary", "Scientific", "Supernatural", "Fictional")),
ont_ctry_name = factor(ont_ctry_name, levels = levels_country)) %>%
ggplot(aes(x = category, fill = response_txt)) +
geom_bar(position = "fill") + # Stacked proportions
# geom_text(stat = "count", aes(label = after_stat(count)),
# position = position_fill(vjust = 0.5),
# size = 6, color = "white") +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_fill_manual(values = conf_colors, drop = FALSE) +
theme_bw() +
labs(
x = "Category of Items",
y = "Proportion of Responses",
fill = "Responses",
title = "Can __ be experienced by anyone or only by specific people?\nby Category and Field Site"
) +
theme(axis.text.x = element_text(size = 15, angle = -35, vjust = 1, hjust = 0),
axis.title.x = element_text(size = 18),
axis.title.y = element_text(size = 18),
axis.text.y = element_text(size = 16),
plot.title = element_text(size = 25),
strip.text.x = element_text(size = 18),
legend.text = element_text(size = 16),
legend.title = element_text(size =18)) +
facet_wrap(~ ont_ctry_name, ncol = 4) # Separate plots for each country
Models predicting “Can X be experienced by anyone or only by specific people?” responses by category. The pairwise contrasts from these models are reported in the manuscript under the section “Additional Questions Reflect Differences in Epistemic Frames”
# 1 regression per country (4 total) where response is predicted by category
# US
m.spec.us <- lmer(response ~ category + (1|ont_subj), data = filter(data_long_spec, ont_ctry_name == "US"))
summary(m.spec.us)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: response ~ category + (1 | ont_subj)
Data: filter(data_long_spec, ont_ctry_name == "US")
REML criterion at convergence: 220.1
Scaled residuals:
Min 1Q Median 3Q Max
-0.9216 -0.7635 -0.2711 -0.2271 2.4120
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.002358 0.04856
Residual 0.139782 0.37387
Number of obs: 234, groups: ont_subj, 49
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 0.102041 0.053859 229.724066 1.895 0.05940 .
categoryScientific -0.002248 0.069678 189.097447 -0.032 0.97429
categoryFictional 0.197425 0.077221 187.294488 2.557 0.01136 *
categorySupernatural 0.197507 0.069704 192.401201 2.834 0.00509 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) ctgrySc ctgryF
ctgryScntfc -0.760
catgryFctnl -0.686 0.530
ctgrySprntr -0.760 0.586 0.531
##pairwise contrasts
emm.spec.us <- emmeans(m.spec.us, ~ category)
contrast(emm.spec.us, method = "pairwise", adjust = "none")
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 2.25e-03 0.0697 188 0.032 0.9743
Ordinary - Fictional -1.97e-01 0.0772 186 -2.556 0.0114
Ordinary - Supernatural -1.98e-01 0.0698 191 -2.831 0.0051
Scientific - Fictional -2.00e-01 0.0716 194 -2.788 0.0058
Scientific - Supernatural -2.00e-01 0.0636 210 -3.139 0.0019
Fictional - Supernatural -8.18e-05 0.0715 188 -0.001 0.9991
Degrees-of-freedom method: kenward-roger
# Ecuador
m.spec.ecuador <- lmer(response ~ category + (1|ont_subj), data = filter(data_long_spec, ont_ctry_name == "Ecuador"))
summary(m.spec.ecuador)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: response ~ category + (1 | ont_subj)
Data: filter(data_long_spec, ont_ctry_name == "Ecuador")
REML criterion at convergence: 66.1
Scaled residuals:
Min 1Q Median 3Q Max
-1.17331 -0.34012 -0.19720 -0.01107 2.76448
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.003315 0.05757
Residual 0.103822 0.32221
Number of obs: 93, groups: ont_subj, 20
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 4.938e-17 7.319e-02 8.861e+01 0.000 1.000000
categoryScientific 7.054e-02 9.447e-02 7.282e+01 0.747 0.457679
categoryFictional 1.060e-01 1.033e-01 7.081e+01 1.027 0.308029
categorySupernatural 3.470e-01 9.597e-02 7.287e+01 3.615 0.000549 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) ctgrySc ctgryF
ctgryScntfc -0.751
catgryFctnl -0.687 0.532
ctgrySprntr -0.739 0.571 0.524
##pairwise contrasts
emm.spec.ecuador <- emmeans(m.spec.ecuador, ~ category)
contrast(emm.spec.ecuador, method = "pairwise", adjust = "none")
contrast estimate SE df t.ratio p.value
Ordinary - Scientific -0.0705 0.0947 72.9 -0.745 0.4587
Ordinary - Fictional -0.1060 0.1030 70.9 -1.026 0.3083
Ordinary - Supernatural -0.3470 0.0962 72.9 -3.606 0.0006
Scientific - Fictional -0.0355 0.0963 74.2 -0.368 0.7136
Scientific - Supernatural -0.2764 0.0891 80.2 -3.103 0.0026
Fictional - Supernatural -0.2409 0.0977 73.2 -2.467 0.0160
Degrees-of-freedom method: kenward-roger
# Peru
m.spec.peru <- lmer(response ~ category + (1|ont_subj), data = filter(data_long_spec, ont_ctry_name == "Peru"))
summary(m.spec.peru)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: response ~ category + (1 | ont_subj)
Data: filter(data_long_spec, ont_ctry_name == "Peru")
REML criterion at convergence: 250.4
Scaled residuals:
Min 1Q Median 3Q Max
-0.79931 -0.72533 -0.66887 0.03252 2.27273
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.001803 0.04247
Residual 0.154486 0.39305
Number of obs: 243, groups: ont_subj, 40
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 8.852e-17 6.251e-02 2.388e+02 0.000 1.000000
categoryScientific 2.796e-01 8.054e-02 2.062e+02 3.471 0.000631 ***
categoryFictional 1.064e-01 9.694e-02 2.116e+02 1.098 0.273642
categorySupernatural 2.931e-01 7.207e-02 2.017e+02 4.066 6.85e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) ctgrySc ctgryF
ctgryScntfc -0.767
catgryFctnl -0.637 0.495
ctgrySprntr -0.857 0.665 0.553
##pairwise contrasts
emm.spec.peru <- emmeans(m.spec.peru, ~ category)
contrast(emm.spec.peru, method = "pairwise", adjust = "none")
contrast estimate SE df t.ratio p.value
Ordinary - Scientific -0.2796 0.0806 206 -3.469 0.0006
Ordinary - Fictional -0.1064 0.0971 211 -1.096 0.2743
Ordinary - Supernatural -0.2931 0.0721 201 -4.066 0.0001
Scientific - Fictional 0.1732 0.0904 212 1.915 0.0568
Scientific - Supernatural -0.0135 0.0629 208 -0.214 0.8304
Fictional - Supernatural -0.1867 0.0830 215 -2.248 0.0256
Degrees-of-freedom method: kenward-roger
Can __ be sensed? This combines across all sensory questions for each item. The items differed from country to country and version to version. But almost all contain the questions: see, hear, smell, touch, feel. Many but not all also had a taste question.
Models predicting confidence x existence scores with consensus and sensory experience scores. The results are reported in Table 3 in the manuscript
# for more details on consensus score calculation, see the data frame where it is created in Data Wrangling
m.conf <- lmer(conf_dir ~ consensus_excl_self + usens_response + (1 | ont_ctry_name/ont_subj),
data = df_ext_usens_conf)
summary(m.conf)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ consensus_excl_self + usens_response + (1 | ont_ctry_name/ont_subj)
Data: df_ext_usens_conf
REML criterion at convergence: 2134.2
Scaled residuals:
Min 1Q Median 3Q Max
-4.2610 -0.4330 0.0861 0.3859 3.9757
Random effects:
Groups Name Variance Std.Dev.
ont_subj:ont_ctry_name (Intercept) 0.132745 0.36434
ont_ctry_name (Intercept) 0.009728 0.09863
Residual 1.040922 1.02026
Number of obs: 714, groups: ont_subj:ont_ctry_name, 177; ont_ctry_name, 4
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) -2.92816 0.21417 76.07243 -13.672 <2e-16 ***
consensus_excl_self 5.00615 0.22733 354.91570 22.022 <2e-16 ***
usens_response 0.78817 0.09002 688.50272 8.756 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) cnsn__
cnsnss_xcl_ -0.900
usens_rspns -0.099 -0.197
# making Table 3
m.conf %>%
tbl_regression(intercept = TRUE) %>%
as_gt() %>%
gt::tab_header(title = "Regression Results: Effects of Consensus and Sensory Evidence on Confidence")
| Regression Results: Effects of Consensus and Sensory Evidence on Confidence | |||
| Characteristic | Beta | 95% CI | p-value |
|---|---|---|---|
| (Intercept) | -2.9 | -3.4, -2.5 | <0.001 |
| consensus_excl_self | 5.0 | 4.6, 5.5 | <0.001 |
| usens_response | 0.79 | 0.61, 0.96 | <0.001 |
| Abbreviation: CI = Confidence Interval | |||
df_ext_usens_conf_ALT <- df_ext_usens_conf %>%
mutate(ext_dir = case_when(
response == 1 ~ 1,
response == 0 ~ -1,
response == 0.5 ~ 0,
TRUE ~ response),
ext_label = case_when(
ext_dir == 1 ~ "exist",
ext_dir == -1 ~ "not",
ext_dir == 0 ~ "unsure"),
conf_dir = case_when(
ext_label == "exist" ~ ext_dir + conf_response,
ext_label == "not" ~ ext_dir - conf_response,
ext_label == "unsure" ~ 0),
conf_dir_text = case_when(
conf_dir == -4 ~ "Very sure doesn't exist",
conf_dir == -3 ~ "Pretty sure doesn't exist",
conf_dir == -2 ~ "Somewhat sure doesn't exist",
conf_dir == -1 ~ "Not sure doesn't exist",
conf_dir == 0 ~ "Not sure",
conf_dir == 1 ~ "Not sure exists",
conf_dir == 2 ~ "Somewhat sure exists",
conf_dir == 3 ~ "Pretty sure exists",
conf_dir == 4 ~ "Very sure exists"),
conf_dir_text = factor(conf_dir_text,
levels = c("Very sure doesn't exist", "Pretty sure doesn't exist", "Somewhat sure doesn't exist", "Not sure doesn't exist", "Not sure", "Not sure exists", "Somewhat sure exists", "Pretty sure exists", "Very sure exists"))
)
conf_colors <- (RColorBrewer::brewer.pal(9, "RdYlBu"))
# Create stacked bar plot
df_ext_usens_conf_ALT %>%
filter(!is.na(conf_dir_text), !is.na(category)) %>%
mutate(category = factor(category, levels = c("Ordinary", "Scientific", "Supernatural", "Fictional"))) %>%
ggplot(aes(x = category, fill = conf_dir_text)) +
geom_bar(position = "fill") + # Stacked proportions
# geom_text(stat = "count", aes(label = after_stat(count)),
# position = position_fill(vjust = 0.5),
# size = 6, color = "white") +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_fill_manual(values = conf_colors, drop = FALSE) +
theme_bw() +
labs(
x = "Category of Objects",
y = "Proportion of Responses",
fill = "Confidence x Existence",
title = "Confidence x Existence by Category and Country"
) +
theme(axis.text.x = element_text(size = 15, angle = -35, vjust = 1, hjust = 0),
axis.title.x = element_text(size = 18),
axis.title.y = element_text(size = 18),
axis.text.y = element_text(size = 16),
plot.title = element_text(size = 25),
strip.text.x = element_text(size = 18),
legend.text = element_text(size = 16),
legend.title = element_text(size =18)) +
facet_wrap(~ ont_ctry_name, ncol = 4) # Separate plots for each country
# 1 regression per country (4 total) where response is predicted by category
# US
m.us <- lmer(conf_dir ~ question_type + (1|ont_subj), data = filter(df_ext_usens_conf_ALT, ont_ctry_name == "US"))
summary(m.us)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: filter(df_ext_usens_conf_ALT, ont_ctry_name == "US")
REML criterion at convergence: 735.9
Scaled residuals:
Min 1Q Median 3Q Max
-3.05877 -0.27588 0.01684 0.27397 2.88053
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.3683 0.6069
Residual 4.4209 2.1026
Number of obs: 168, groups: ont_subj, 49
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.9592 0.3126 161.8633 12.664 < 2e-16 ***
question_typeScientific -0.2245 0.4248 120.1173 -0.528 0.598
question_typeSupernatural -3.1020 0.4248 120.1173 -7.303 3.37e-11 ***
question_typeFictional -6.1828 0.5557 140.3890 -11.127 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) qstn_typSc qstn_typSp
qstn_typScn -0.679
qstn_typSpr -0.679 0.500
qstn_typFct -0.519 0.382 0.382
##pairwise contrasts
emm.us <- emmeans(m.us, ~ question_type)
contrast(emm.us, method = "pairwise", adjust = "none")
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 0.224 0.425 117 0.528 0.5982
Ordinary - Supernatural 3.102 0.425 117 7.303 <.0001
Ordinary - Fictional 6.183 0.558 138 11.072 <.0001
Scientific - Supernatural 2.878 0.425 117 6.774 <.0001
Scientific - Fictional 5.958 0.558 138 10.670 <.0001
Supernatural - Fictional 3.081 0.558 138 5.517 <.0001
Degrees-of-freedom method: kenward-roger
# Ghana
m.ghana <- lmer(conf_dir ~ question_type + (1|ont_subj), data = filter(df_ext_usens_conf_ALT, ont_ctry_name == "Ghana"))
summary(m.ghana)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: filter(df_ext_usens_conf_ALT, ont_ctry_name == "Ghana")
REML criterion at convergence: 1160.3
Scaled residuals:
Min 1Q Median 3Q Max
-4.5726 -0.3506 0.1818 0.4952 1.8554
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.1846 0.4296
Residual 1.4565 1.2068
Number of obs: 349, groups: ont_subj, 70
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.7571 0.1531 328.0187 24.539 <2e-16 ***
question_typeScientific -0.4260 0.1871 280.4269 -2.277 0.0235 *
question_typeSupernatural -0.3013 0.1867 280.3591 -1.614 0.1078
question_typeFictional -1.9429 0.2040 275.6218 -9.524 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) qstn_typSc qstn_typSp
qstn_typScn -0.726
qstn_typSpr -0.728 0.590
qstn_typFct -0.666 0.545 0.546
##pairwise contrasts
emm.ghana <- emmeans(m.ghana, ~ question_type)
contrast(emm.ghana, method = "pairwise", adjust = "none")
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 0.426 0.187 281 2.276 0.0236
Ordinary - Supernatural 0.301 0.187 281 1.613 0.1079
Ordinary - Fictional 1.943 0.204 276 9.524 <.0001
Scientific - Supernatural -0.125 0.169 298 -0.736 0.4621
Scientific - Fictional 1.517 0.187 281 8.106 <.0001
Supernatural - Fictional 1.642 0.187 281 8.789 <.0001
Degrees-of-freedom method: kenward-roger
# Ecuador
m.ecuador <- lmer(conf_dir ~ question_type + (1|ont_subj), data = filter(df_ext_usens_conf_ALT, ont_ctry_name == "Ecuador"))
summary(m.ecuador)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: filter(df_ext_usens_conf_ALT, ont_ctry_name == "Ecuador")
REML criterion at convergence: 324.8
Scaled residuals:
Min 1Q Median 3Q Max
-3.7139 -0.5337 0.2668 0.5260 1.7660
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.17 0.4123
Residual 1.60 1.2649
Number of obs: 96, groups: ont_subj, 20
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.6500 0.2975 88.3018 12.270 < 2e-16 ***
question_typeScientific -0.5375 0.3690 73.8784 -1.457 0.149
question_typeSupernatural -0.5322 0.3713 73.2224 -1.434 0.156
question_typeFictional -1.9014 0.4056 72.2588 -4.688 1.27e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) qstn_typSc qstn_typSp
qstn_typScn -0.729
qstn_typSpr -0.724 0.579
qstn_typFct -0.663 0.534 0.532
##pairwise contrasts
emm.ecuador <- emmeans(m.ecuador, ~ question_type)
contrast(emm.ecuador, method = "pairwise", adjust = "none")
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 0.53746 0.370 75.2 1.454 0.1501
Ordinary - Supernatural 0.53225 0.372 74.6 1.432 0.1564
Ordinary - Fictional 1.90136 0.406 73.7 4.685 <.0001
Scientific - Supernatural -0.00521 0.342 80.4 -0.015 0.9879
Scientific - Fictional 1.36390 0.376 76.3 3.624 0.0005
Supernatural - Fictional 1.36911 0.378 74.8 3.625 0.0005
Degrees-of-freedom method: kenward-roger
# Peru
m.peru <- lmer(conf_dir ~ question_type + (1|ont_subj), data = filter(df_ext_usens_conf_ALT, ont_ctry_name == "Peru"))
summary(m.peru)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: filter(df_ext_usens_conf_ALT, ont_ctry_name == "Peru")
REML criterion at convergence: 793
Scaled residuals:
Min 1Q Median 3Q Max
-4.2876 -0.4473 0.2786 0.3683 2.6448
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.04796 0.219
Residual 1.28285 1.133
Number of obs: 253, groups: ont_subj, 40
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.7500 0.1824 247.1351 20.559 <2e-16 ***
question_typeScientific -0.1663 0.2307 215.1638 -0.721 0.472
question_typeSupernatural -0.1667 0.2068 211.7962 -0.806 0.421
question_typeFictional -2.8167 0.2691 217.8182 -10.467 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) qstn_typSc qstn_typSp
qstn_typScn -0.762
qstn_typSpr -0.850 0.672
qstn_typFct -0.653 0.518 0.576
##pairwise contrasts
emm.peru <- emmeans(m.peru, ~ question_type)
contrast(emm.peru, method = "pairwise", adjust = "none")
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 0.16633 0.231 214 0.721 0.4719
Ordinary - Supernatural 0.16667 0.207 210 0.806 0.4212
Ordinary - Fictional 2.81673 0.269 217 10.459 <.0001
Scientific - Supernatural 0.00034 0.179 216 0.002 0.9985
Scientific - Fictional 2.65040 0.248 217 10.692 <.0001
Supernatural - Fictional 2.65006 0.226 219 11.718 <.0001
Degrees-of-freedom method: kenward-roger
Model predicting confidence x existence scores by category pooling across non-US countries. These results show that when you combine all non-US country responses together, the difference between ordinary and supernatural confidence ratings are significant.
#combinging non us countries
m.non.us <- lmer(conf_dir ~ question_type + (1|ont_ctry_name/ont_subj), data = filter(df_ext_usens_conf_ALT, ont_ctry_name != "US"))
summary(m.non.us)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_ctry_name/ont_subj)
Data: filter(df_ext_usens_conf_ALT, ont_ctry_name != "US")
REML criterion at convergence: 2293.9
Scaled residuals:
Min 1Q Median 3Q Max
-4.5239 -0.3322 0.2444 0.4483 2.0520
Random effects:
Groups Name Variance Std.Dev.
ont_subj:ont_ctry_name (Intercept) 0.1228 0.3504
ont_ctry_name (Intercept) 0.0000 0.0000
Residual 1.4453 1.2022
Number of obs: 698, groups: ont_subj:ont_ctry_name, 130; ont_ctry_name, 3
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.7385 0.1098 674.2405 34.039 < 2e-16 ***
question_typeScientific -0.3647 0.1366 571.9140 -2.671 0.00779 **
question_typeSupernatural -0.2598 0.1302 578.2497 -1.996 0.04639 *
question_typeFictional -2.1671 0.1520 566.5738 -14.255 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) qstn_typSc qstn_typSp
qstn_typScn -0.741
qstn_typSpr -0.778 0.623
qstn_typFct -0.666 0.536 0.561
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')
##pairwise contrasts
emm.non.us <- emmeans(m.non.us, ~ question_type)
contrast(emm.non.us, method = "pairwise", adjust = "none")
contrast estimate SE df t.ratio p.value
Ordinary - Scientific 0.365 0.137 577 2.670 0.0078
Ordinary - Supernatural 0.260 0.132 561 1.968 0.0495
Ordinary - Fictional 2.167 0.152 572 14.240 <.0001
Scientific - Supernatural -0.105 0.118 581 -0.889 0.3746
Scientific - Fictional 1.802 0.140 580 12.887 <.0001
Supernatural - Fictional 1.907 0.137 541 13.951 <.0001
Degrees-of-freedom method: kenward-roger
Model predicting confidence x existence scores by category, but only for highest contrast ordinary vs. supernatural items (coffee cups & tables vs. God & demons). These results show that these highest contrasts are significantly different in the US and Ghana, but not in Ecuador and Peru (in Ecuador, our smallest sample size, there are hints that this effect might be found in future similar studies). See Appendix A for full confidence and existence ratings broken down by item, version, and country.
# US --mugs, tables, god, demons
m.mug.us <- lmer(conf_dir ~ question_type + (1|ont_subj), data = df_ext_usens_conf_ALT %>%
filter(ont_ctry_name == "US",
item_code %in% c("mug", "tbl", "dem", "god")))
summary(m.mug.us)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: df_ext_usens_conf_ALT %>% filter(ont_ctry_name == "US", item_code %in%
c("mug", "tbl", "dem", "god"))
REML criterion at convergence: 446.7
Scaled residuals:
Min 1Q Median 3Q Max
-2.03793 0.01365 0.01586 0.47946 1.31969
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.01493 0.1222
Residual 5.65089 2.3772
Number of obs: 98, groups: ont_subj, 49
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.9592 0.3400 95.9993 11.643 < 2e-16 ***
question_typeSupernatural -3.1020 0.4803 48.0380 -6.459 4.95e-08 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr)
qstn_typSpr -0.706
# Ghana --mugs, tables, god, demons
m.mug.ghana <- lmer(conf_dir ~ question_type + (1|ont_subj), data = df_ext_usens_conf_ALT %>%
filter(ont_ctry_name == "Ghana",
item_code %in% c("mug", "tbl", "dem", "god")))
summary(m.mug.ghana)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: df_ext_usens_conf_ALT %>% filter(ont_ctry_name == "Ghana", item_code %in%
c("mug", "tbl", "dem", "god"))
REML criterion at convergence: 314.8
Scaled residuals:
Min 1Q Median 3Q Max
-3.7306 -0.1313 0.0024 0.5628 1.5196
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.2505 0.5005
Residual 0.3438 0.5863
Number of obs: 140, groups: ont_subj, 70
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.75714 0.09214 117.17884 40.776 < 2e-16 ***
question_typeSupernatural -0.32857 0.09911 69.00000 -3.315 0.00146 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr)
qstn_typSpr -0.538
# Ecuador --mugs, tables, god, Wene
m.mug.ecuador <- lmer(conf_dir ~ question_type + (1|ont_subj), data = df_ext_usens_conf_ALT %>%
filter(ont_ctry_name == "Ecuador",
item_code %in% c("mug", "tbl", "wen", "god"))) #Wene instead of demon
summary(m.mug.ecuador)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: df_ext_usens_conf_ALT %>% filter(ont_ctry_name == "Ecuador",
item_code %in% c("mug", "tbl", "wen", "god"))
REML criterion at convergence: 122
Scaled residuals:
Min 1Q Median 3Q Max
-4.0763 -0.2848 0.1576 0.7600 0.9070
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.2116 0.460
Residual 1.1538 1.074
Number of obs: 39, groups: ont_subj, 20
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.6500 0.2613 36.1945 13.969 3.76e-16 ***
question_typeSupernatural -0.6471 0.3448 19.0832 -1.877 0.0759 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr)
qstn_typSpr -0.640
# Peru --mugs, tables, god, Oni Ibo
m.mug.peru <- lmer(conf_dir ~ question_type + (1|ont_subj), data = df_ext_usens_conf_ALT %>%
filter(ont_ctry_name == "Peru",
item_code %in% c("taz", "tbl", "oni", "god")))
summary(m.mug.peru)
Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: conf_dir ~ question_type + (1 | ont_subj)
Data: df_ext_usens_conf_ALT %>% filter(ont_ctry_name == "Peru", item_code %in%
c("taz", "tbl", "oni", "god"))
REML criterion at convergence: 163.7
Scaled residuals:
Min 1Q Median 3Q Max
-4.8913 0.2505 0.2505 0.4187 0.9844
Random effects:
Groups Name Variance Std.Dev.
ont_subj (Intercept) 0.08974 0.2996
Residual 0.35385 0.5948
Number of obs: 80, groups: ont_subj, 40
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.7500 0.1053 74.9330 35.610 <2e-16 ***
question_typeSupernatural -0.1000 0.1330 39.0000 -0.752 0.457
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr)
qstn_typSpr -0.632
# Just version 1 questions--there are 21 participants
exist_bar(country = "US", version = 1,
cols = c("sci_ext_grm", "spn_ext_dem", "ord_ext_mug", "sci_ext_gvt", "fic_ext_smn"),
col_names = c("sci_ext_grm" = "Germs",
"spn_ext_dem" = "Demons",
"ord_ext_mug" = "Coffee Mugs",
"sci_ext_gvt" = "Gravity",
"fic_ext_smn" = "Superman"),
title = "US Version 1 responses to whether objects exist",
data = df)
# Version 2 -- 28 participants
exist_bar(country = "US", version = 2,
cols = c("sci_ext_cnc", "spn_ext_god", "ord_ext_tbl", "spn_ext_ghs", "fic_ext_hap"),
col_names = c("sci_ext_cnc" = "Cancer",
"spn_ext_god" = "God",
"ord_ext_tbl" = "Tables",
"spn_ext_ghs" = "Ghosts",
"fic_ext_hap" = "Harry Potter"),
title = "US Version 2 responses to whether objects exist",
data = df)
#-----------------------------------------
## BOTH VERSIONS COMBINED BY QUESTION TYPE
us_data_combined <- df %>%
filter(ont_ctry_name == "US") %>%
select(sci_ext_grm, spn_ext_dem, ord_ext_mug, sci_ext_gvt, fic_ext_smn,
sci_ext_cnc, spn_ext_god, ord_ext_tbl, spn_ext_ghs, fic_ext_hap) %>%
mutate(across(everything(), as.numeric)) %>%
pivot_longer(everything(), names_to = "question", values_to = "response") %>%
mutate(
question_type = recode(question,
sci_ext_grm = "Scientific",
sci_ext_gvt = "Scientific",
sci_ext_cnc = "Scientific",
ord_ext_mug = "Ordinary",
ord_ext_tbl = "Ordinary",
spn_ext_god = "Supernatural",
spn_ext_dem = "Supernatural",
spn_ext_ghs = "Supernatural",
fic_ext_hap = "Fictional",
fic_ext_smn = "Fictional")
) %>%
filter(!is.na(response)) %>%
group_by(question_type) %>%
summarise(
yes_count = sum(response == 1),
total_count = n(),
proportion_yes = yes_count / total_count
) %>%
arrange(desc(proportion_yes)) # Order by proportion
# Create bar plot
us_data_combined %>%
ggplot(aes(x = reorder(question_type, -proportion_yes), y = proportion_yes, fill = question_type)) +
geom_col(width = 0.8) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_fill_brewer(palette = "Set2") +
theme_bw() +
theme(legend.position = "none") + # Removes the legend
geom_text(aes(label = scales::percent(proportion_yes, accuracy = 1)),
position = position_stack(vjust = 0.5), color = "white", size = 5) + # Add % and n
labs(
title = "US Ontology Questions--Proportion of 'Yes' Responses by Question Type",
x = "Question Type",
y = "Proportion of 'Yes' Responses"
)
# Version 1 -- 35 participants
exist_bar(country = "Ghana", version = 1,
cols = c("sci_ext_grm", "spn_ext_dem", "ord_ext_mug", "sci_ext_frc", "fic_ext_smn"),
col_names = c("sci_ext_grm" = "Germs",
"spn_ext_dem" = "Demons",
"ord_ext_mug" = "Coffee Mugs",
"sci_ext_frc" = "Force",
"fic_ext_smn" = "Superman"),
title = "Ghana Version 1 responses to whether objects exist",
data = df)
# Version 2 -- 35 participants
exist_bar(country = "Ghana", version = 2,
cols = c("sci_ext_cnc", "spn_ext_god", "ord_ext_tbl", "spn_ext_abs", "fic_ext_kwk"),
col_names = c("sci_ext_cnc" = "Cancer",
"spn_ext_god" = "God",
"ord_ext_tbl" = "Tables",
"spn_ext_abs" = "Abosom (small god)",
"fic_ext_kwk" = "Kweku Ananse (fic. char.)"),
title = "Ghana Version 2 responses to whether objects exist",
data = df)
#----------------------
## BOTH VERSIONS COMBINED BY QUESTION TYPE
gh_data_combined <- df %>%
filter(ont_ctry_name == "Ghana") %>%
select(sci_ext_grm, spn_ext_dem, ord_ext_mug, sci_ext_frc, fic_ext_smn,
sci_ext_cnc, spn_ext_god, ord_ext_tbl, spn_ext_abs, fic_ext_kwk) %>%
mutate(across(everything(), as.numeric)) %>%
pivot_longer(everything(), names_to = "question", values_to = "response") %>%
mutate(
question_type = recode(question,
sci_ext_grm = "Scientific",
sci_ext_frc = "Scientific",
sci_ext_cnc = "Scientific",
ord_ext_mug = "Ordinary",
ord_ext_tbl = "Ordinary",
spn_ext_god = "Supernatural",
spn_ext_dem = "Supernatural",
spn_ext_abs = "Supernatural",
fic_ext_kwk = "Fictional",
fic_ext_smn = "Fictional")
) %>%
filter(!is.na(response)) %>%
group_by(question_type) %>%
summarise(
yes_count = sum(response == 1),
total_count = n(),
proportion_yes = yes_count / total_count
) %>%
arrange(desc(proportion_yes)) # Order by proportion
# Create bar plot
gh_data_combined %>%
ggplot(aes(x = reorder(question_type, -proportion_yes), y = proportion_yes, fill = question_type)) +
geom_col(width = 0.8) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_fill_brewer(palette = "Set2") +
theme_bw() +
theme(legend.position = "none") + # Removes the legend
geom_text(aes(label = scales::percent(proportion_yes, accuracy = 1)), # Add text on the bars
position = position_stack(vjust = 0.5), color = "white", size = 5) + # Adjust text appearance
labs(
title = "Ghana Ontology Questions--Proportion of 'Yes' Responses by Question Type",
x = "Question Type",
y = "Proportion of 'Yes' Responses")
# Version 1 -- 10 participants
exist_bar(country = "Ecuador", version = 1,
cols = c("sci_ext_flu", "spn_ext_wen", "ord_ext_mug", "sci_ext_par", "fic_ext_spd"),
col_names = c("sci_ext_flu" = "Daicawo (flu)",
"spn_ext_wen" = "Wene (demon/forest god)",
"ord_ext_mug" = "Coffee Mugs",
"sci_ext_par" = "Intestinal Parasites",
"fic_ext_spd" = "Spiderman"),
title = "Ecuadorian Amazon Version 1 responses to whether objects exist",
data = df)
# Version 2 -- 10 participants
exist_bar(country = "Ecuador", version = 2,
cols = c("sci_ext_cnc", "spn_ext_god", "ord_ext_tbl", "spn_ext_okw", "fic_ext_ram"),
col_names = c("sci_ext_cnc" = "Cancer",
"spn_ext_god" = "God",
"ord_ext_tbl" = "Tables",
"spn_ext_okw" = "Onokawa (ghost)",
"fic_ext_ram" = "Rambo"),
title = "Ecuadorian Amazon Version 2 responses to whether objects exist",
data = df)
#----------------------
## BOTH VERSIONS COMBINED BY QUESTION TYPE
ec_data_combined <- df %>%
filter(ont_ctry_name == "Ecuador") %>%
select(sci_ext_flu, spn_ext_wen, ord_ext_mug, sci_ext_par, fic_ext_spd,
sci_ext_cnc, spn_ext_god, ord_ext_tbl, spn_ext_okw, fic_ext_ram) %>%
mutate(across(everything(), as.numeric)) %>%
pivot_longer(everything(), names_to = "question", values_to = "response") %>%
mutate(
question_type = recode(question,
sci_ext_flu = "Scientific",
sci_ext_par = "Scientific",
sci_ext_cnc = "Scientific",
ord_ext_mug = "Ordinary",
ord_ext_tbl = "Ordinary",
spn_ext_god = "Supernatural",
spn_ext_wen = "Supernatural",
spn_ext_okw = "Supernatural",
fic_ext_spd = "Fictional",
fic_ext_ram = "Fictional")
) %>%
filter(!is.na(response)) %>%
group_by(question_type) %>%
summarise(
yes_count = sum(response == 1),
total_count = n(),
proportion_yes = yes_count / total_count
) %>%
arrange(desc(proportion_yes)) # Order by proportion
# Create bar plot
ec_data_combined %>%
ggplot(aes(x = reorder(question_type, -proportion_yes), y = proportion_yes, fill = question_type)) +
geom_col(width = 0.8) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_fill_brewer(palette = "Set2") +
theme_bw() +
theme(legend.position = "none") + # Removes the legend
geom_text(aes(label = scales::percent(proportion_yes, accuracy = 1)), # Add text on the bars
position = position_stack(vjust = 0.5), color = "white", size = 5) + # Adjust text appearance
labs(
title = "Ecuadorian Amazon Ontology Questions--Proportion of 'Yes' Responses by Question Type",
x = "Question Type",
y = "Proportion of 'Yes' Responses")
# Version 1 -- 21 participants
exist_bar(country = "Peru", version = 1,
cols = c("spn_ext_ysh", "sci_ext_par", "spn_ext_god", "ord_ext_tbl", "fic_ext_njt", "spn_ext_cha", "sci_ext_cnc"),
col_names = c("spn_ext_ysh" = "Mahua Yoshin\n(bad spirit)",
"sci_ext_par" = "Intestinal Parasites",
"spn_ext_god" = "God",
"ord_ext_tbl" = "Tables",
"fic_ext_njt" = "Ninja Turtles",
"spn_ext_cha" = "Chaikoni\n(invisible magic humans)",
"sci_ext_cnc" = "Cancer"),
title = "Peruvian Amazon Version 1 responses to whether objects exist",
data = df)
# Version 2 -- 19 participants
exist_bar(country = "Peru", version = 2,
cols = c("sci_ext_grm", "nas_ext_ron", "ord_ext_taz", "spn_ext_oni", "fic_ext_smn", "nas_ext_dlp"),
col_names = c("sci_ext_grm" = "Germs",
"nas_ext_ron" = "Ronin\n(Anaconda)",
"ord_ext_taz" = "Coffee Mug",
"spn_ext_oni" = "Oni Ibo\n(good spirit)",
"fic_ext_smn" = "Superman",
"nas_ext_dlp" = "Joshin Kokoshka\n(pink river dolphin)"),
title = "Peruvian Amazon Version 2 responses to whether objects exist",
data = df)
#----------------------
# BOTH VERSIONS COMBINED
peru_data_combined <- df %>%
filter(ont_ctry_name == "Peru") %>%
select(spn_ext_ysh, sci_ext_par, spn_ext_god, ord_ext_tbl, fic_ext_njt, spn_ext_cha, sci_ext_cnc,
sci_ext_grm, nas_ext_ron, ord_ext_taz, spn_ext_oni, fic_ext_smn, nas_ext_dlp) %>%
mutate(across(everything(), as.numeric)) %>%
pivot_longer(everything(), names_to = "question", values_to = "response") %>%
mutate(
question_type = recode(question,
sci_ext_par = "Scientific",
sci_ext_cnc = "Scientific",
sci_ext_grm = "Scientific",
ord_ext_taz = "Ordinary",
ord_ext_tbl = "Ordinary",
spn_ext_ysh = "Supernatural",
spn_ext_god = "Supernatural",
spn_ext_cha = "Supernatural",
nas_ext_ron = "Supernatural",
spn_ext_oni = "Supernatural",
nas_ext_dlp = "Supernatural",
fic_ext_njt = "Fictional",
fic_ext_smn = "Fictional")
) %>%
filter(!is.na(response)) %>%
group_by(question_type) %>%
summarise(
yes_count = sum(response == 1),
total_count = n(),
proportion_yes = yes_count / total_count
) %>%
arrange(desc(proportion_yes)) # Order by proportion
# Create bar plot
peru_data_combined %>%
ggplot(aes(x = reorder(question_type, -proportion_yes), y = proportion_yes, fill = question_type)) +
geom_col(width = 0.8) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_fill_brewer(palette = "Set2") +
theme_bw() +
theme(legend.position = "none") + # Removes the legend
geom_text(aes(label = scales::percent(proportion_yes, accuracy = 1)), # Add text on the bars
position = position_stack(vjust = 0.5), color = "white", size = 5) + # Adjust text appearance
labs(
title = "Peru Amazon Ontology Questions--Proportion of 'Yes' Responses by Question Type",
x = "Question Type",
y = "Proportion of 'Yes' Responses")
# Version 1--21 participants
conf_bar_by_existence(
country = "US",
version = 1,
conf_cols = c(
"sci_conf.ext_grm", "spn_conf.ext_dem", "ord_conf.ext_mug", "sci_conf.ext_gvt", "fic_conf.ext_smn"
),
exist_cols = c(
"sci_ext_grm", "spn_ext_dem", "ord_ext_mug", "sci_ext_gvt", "fic_ext_smn"
),
col_names = c(
"sci_conf.ext_grm" = "Germs",
"spn_conf.ext_dem" = "Demons",
"ord_conf.ext_mug" = "Coffee Mugs",
"sci_conf.ext_gvt" = "Gravity",
"fic_conf.ext_smn" = "Superman"
),
title = "US V1: Confidence by Belief"
)
# Version 2 -- 28 participants
conf_bar_by_existence(
country = "US",
version = 2,
conf_cols = c(
"sci_conf.ext_cnc", "spn_conf.ext_god", "ord_conf.ext_tbl", "spn_conf.ext_ghs", "fic_conf.ext_hap"
),
exist_cols = c(
"sci_ext_cnc", "spn_ext_god", "ord_ext_tbl", "spn_ext_ghs", "fic_ext_hap"
),
col_names = c(
"sci_conf.ext_cnc" = "Cancer",
"spn_conf.ext_god" = "God",
"ord_conf.ext_tbl" = "Tables",
"spn_conf.ext_ghs" = "Ghosts",
"fic_conf.ext_hap" = "Harry Potter"
),
title = "US V2: Confidence by Belief"
)
# Version 1 -- 35 participants
conf_bar_by_existence(
country = "Ghana",
version = 1,
conf_cols = c(
"sci_conf.ext_grm", "spn_conf.ext_dem", "ord_conf.ext_mug", "sci_conf.ext_frc", "fic_conf.ext_smn"
),
exist_cols = c(
"sci_ext_grm", "spn_ext_dem", "ord_ext_mug", "sci_ext_frc", "fic_ext_smn"
),
col_names = c(
"sci_conf.ext_grm" = "Germs",
"spn_conf.ext_dem" = "Demons",
"ord_conf.ext_mug" = "Coffee Mugs",
"sci_conf.ext_frc" = "Force",
"fic_conf.ext_smn" = "Superman"
),
title = "Ghana V1: Confidence by Belief"
)
# Version 2 -- 35 participants
conf_bar_by_existence(
country = "Ghana",
version = 2,
conf_cols = c(
"sci_conf.ext_cnc", "spn_conf.ext_god", "ord_conf.ext_tbl", "spn_conf.ext_abs", "fic_conf.ext_kwk"
),
exist_cols = c(
"sci_ext_cnc", "spn_ext_god", "ord_ext_tbl", "spn_ext_abs", "fic_ext_kwk"
),
col_names = c(
"sci_conf.ext_cnc" = "Cancer",
"spn_conf.ext_god" = "God",
"ord_conf.ext_tbl" = "Tables",
"spn_conf.ext_abs" = "Abosom\n(small god)",
"fic_conf.ext_kwk" = "Kweku Ananse\n(fic. char.)"
),
title = "Ghana V2: Confidence by Belief"
)
# V1 10 participants
conf_bar_by_existence(
country = "Ecuador",
version = 1,
conf_cols = c(
"sci_conf.ext_flu", "spn_conf.ext_wen", "ord_conf.ext_mug", "sci_conf.ext_par", "fic_conf.ext_spd"
),
exist_cols = c(
"sci_ext_flu", "spn_ext_wen", "ord_ext_mug", "sci_ext_par", "fic_ext_spd"
),
col_names = c(
"sci_conf.ext_flu" = "Daicawo (flu)",
"spn_conf.ext_wen" = "Wene\n(demon/forest god)",
"ord_conf.ext_mug" = "Coffee Mugs",
"sci_conf.ext_par" = "Intestinal Parasites",
"fic_conf.ext_spd" = "Spiderman"
),
title = "Ecuadorian Amazon V1: Confidence by Belief"
)
# V2 10 participants
conf_bar_by_existence(
country = "Ecuador",
version = 2,
conf_cols = c(
"sci_conf.ext_cnc", "spn_conf.ext_god", "ord_conf.ext_tbl", "spn_conf.ext_okw", "fic_conf.ext_ram"
),
exist_cols = c(
"sci_ext_cnc", "spn_ext_god", "ord_ext_tbl", "spn_ext_okw", "fic_ext_ram"
),
col_names = c(
"sci_conf.ext_cnc" = "Cancer",
"spn_conf.ext_god" = "God",
"ord_conf.ext_tbl" = "Tables",
"spn_conf.ext_okw" = "Onokawa\n(ghost)",
"fic_conf.ext_ram" = "Rambo"
),
title = "Ecuadorian Amazon V2: Confidence by Belief"
)
# V1 -- 21 participants
conf_bar_by_existence(
country = "Peru",
version = 1,
conf_cols = c(
"spn_conf.ext_ysh", "sci_conf.ext_par", "spn_conf.ext_god", "ord_conf.ext_tbl", "fic_conf.ext_njt",
"spn_conf.ext_cha", "sci_conf.ext_cnc"
),
exist_cols = c(
"spn_ext_ysh", "sci_ext_par", "spn_ext_god", "ord_ext_tbl", "fic_ext_njt", "spn_ext_cha", "sci_ext_cnc"
),
col_names = c(
"spn_conf.ext_ysh" = "Mahua Yoshin\n(bad spirit)",
"sci_conf.ext_par" = "Intestinal Parasites",
"spn_conf.ext_god" = "God",
"ord_conf.ext_tbl" = "Tables",
"fic_conf.ext_njt" = "Ninja Turtles",
"spn_conf.ext_cha" = "Chaikoni\n(invisible magic humans)",
"sci_conf.ext_cnc" = "Cancer"
),
title = "Peruvian Amazon V1: Confidence by Belief"
)
# V2 -- 19 participants
conf_bar_by_existence(
country = "Peru",
version = 2,
conf_cols = c(
"sci_conf.ext_grm", "nas_conf.ext_ron", "ord_conf.ext_taz", "spn_conf.ext_oni", "fic_conf.ext_smn", "nas_conf.ext_dlp"
),
exist_cols = c(
"sci_ext_grm", "nas_ext_ron", "ord_ext_taz", "spn_ext_oni", "fic_ext_smn", "nas_ext_dlp"
),
col_names = c(
"sci_conf.ext_grm" = "Germs",
"nas_conf.ext_ron" = "Ronin\n(Anaconda)",
"ord_conf.ext_taz" = "Coffee Mug",
"spn_conf.ext_oni" = "Oni Ibo\n(good spirit)",
"fic_conf.ext_smn" = "Superman",
"nas_conf.ext_dlp" = "Joshin Kokoshka\n(pink river dolphin)"
),
title = "Peruvian Amazon V2: Confidence by Belief"
)
yn_stacked_bar(country = "US", version = 1,
cols = c("sci_comu_grm", "spn_comu_dem", "ord_comu_mug", "sci_comu_gvt", "fic_comu_smn"),
col_names = c("sci_comu_grm" = "Germs",
"spn_comu_dem" = "Demons",
"ord_comu_mug" = "Coffee Mugs",
"sci_comu_gvt" = "Gravity",
"fic_comu_smn" = "Superman"),
title = "US V1: Can people communicate with __?")
# Version 2 -- 28 participants
yn_stacked_bar(country = "US", version = 2,
cols = c("sci_comu_cnc", "spn_comu_god", "ord_comu_tbl", "spn_comu_ghs", "fic_comu_hap"),
col_names = c("sci_comu_cnc" = "Cancer",
"spn_comu_god" = "God",
"ord_comu_tbl" = "Tables",
"spn_comu_ghs" = "Ghosts",
"fic_comu_hap" = "Harry Potter"),
title = "US V2: Can people communicate with __?")
# Both versions together
yn_by_category(country = "US",
cols = c("sci_comu_grm", "spn_comu_dem", "ord_comu_mug", "sci_comu_gvt", "fic_comu_smn",
"sci_comu_cnc", "spn_comu_god", "ord_comu_tbl", "spn_comu_ghs", "fic_comu_hap"),
category_mapping = c("sci_comu_grm" = "Scientific",
"spn_comu_dem" = "Supernatural",
"ord_comu_mug" = "Ordinary",
"sci_comu_gvt" = "Scientific",
"fic_comu_smn" = "Fictional",
"sci_comu_cnc" = "Scientific",
"spn_comu_god" = "Supernatural",
"ord_comu_tbl" = "Ordinary",
"spn_comu_ghs" = "Supernatural",
"fic_comu_hap" = "Fictional"),
title = "US: Can people communicate with __?"
)
# Version 1 -- 35 participants by item and version
yn_stacked_bar(country = "Ghana", version = 1,
cols = c("sci_comu_grm", "spn_comu_dem", "ord_comu_mug", "sci_comu_frc", "fic_comu_smn"),
col_names = c("sci_comu_grm" = "Germs",
"spn_comu_dem" = "Demons",
"ord_comu_mug" = "Coffee Mugs",
"sci_comu_frc" = "Force",
"fic_comu_smn" = "Superman"),
title = "Ghana V1: Can people communicate with __?")
# Version 2 -- 35 participants by item and version
yn_stacked_bar(country = "Ghana", version = 2,
cols = c("sci_comu_cnc", "spn_comu_god", "ord_comu_tbl", "spn_comu_abs", "fic_comu_kwk"),
col_names = c("sci_comu_cnc" = "Cancer",
"spn_comu_god" = "God",
"ord_comu_tbl" = "Tables",
"spn_comu_abs" = "Abosom\n(small god)",
"fic_comu_kwk" = "Kweku Ananse\n(fic. char.)"),
title = "Ghana V2: Can people communicate with __?")
# Both versions together
yn_by_category(country = "Ghana",
cols = c("sci_comu_grm", "spn_comu_dem", "ord_comu_mug", "sci_comu_frc", "fic_comu_smn",
"sci_comu_cnc", "spn_comu_god", "ord_comu_tbl", "spn_comu_abs", "fic_comu_kwk"),
category_mapping = c("sci_comu_grm" = "Scientific",
"spn_comu_dem" = "Supernatural",
"ord_comu_mug" = "Ordinary",
"sci_comu_frc" = "Scientific",
"fic_comu_smn" = "Fictional",
"sci_comu_cnc" = "Scientific",
"spn_comu_god" = "Supernatural",
"ord_comu_tbl" = "Ordinary",
"spn_comu_abs" = "Supernatural",
"fic_comu_kwk" = "Fictional"),
title = "Ghana: Can people communicate with __?"
)
# Version 1 -- 10 participants
yn_stacked_bar(country = "Ecuador", version = 1,
cols = c("sci_comu_flu", "spn_comu_wen", "ord_comu_mug", "sci_comu_par", "fic_comu_spd"),
col_names = c("sci_comu_flu" = "Daicawo (flu)",
"spn_comu_wen" = "Wene\n(demon/forest god)",
"ord_comu_mug" = "Coffee Mugs",
"sci_comu_par" = "Intestinal Parasites",
"fic_comu_spd" = "Spiderman"),
title = "Ecuadorian Amazon V1: Can people communicate with __?")
# Version 2 -- 10 participants
yn_stacked_bar(country = "Ecuador", version = 2,
cols = c("sci_comu_cnc", "spn_comu_god", "ord_comu_tbl", "spn_comu_okw", "fic_comu_ram"),
col_names = c("sci_comu_cnc" = "Cancer",
"spn_comu_god" = "God",
"ord_comu_tbl" = "Tables",
"spn_comu_okw" = "Onokawa\n(ghost)",
"fic_comu_ram" = "Rambo"),
title = "Ecuadorian Amazon V2: Can people communicate with __?")
# Both versions together
yn_by_category(country = "Ecuador",
cols = c("sci_comu_flu", "spn_comu_wen", "ord_comu_mug", "sci_comu_par", "fic_comu_spd",
"sci_comu_cnc", "spn_comu_god", "ord_comu_tbl", "spn_comu_okw", "fic_comu_ram"),
category_mapping = c("sci_comu_flu" = "Scientific",
"spn_comu_wen" = "Supernatural",
"ord_comu_mug" = "Ordinary",
"sci_comu_par" = "Scientific",
"fic_comu_spd" = "Fictional",
"sci_comu_cnc" = "Scientific",
"spn_comu_god" = "Supernatural",
"ord_comu_tbl" = "Ordinary",
"spn_comu_okw" = "Supernatural",
"fic_comu_ram" = "Fictional"),
title = "Ecuadorian Amazon: Can people communicate with __?"
)
# Version 1 -- 21 participants
yn_stacked_bar(country = "Peru", version = 1,
cols = c("spn_comu_ysh", "sci_comu_par", "spn_comu_god", "ord_comu_tbl",
"fic_comu_njt", "spn_comu_cha", "sci_comu_cnc"),
col_names = c("spn_comu_ysh" = "Mahua Yoshin\n(bad spirit)",
"sci_comu_par" = "Intestinal Parasites",
"spn_comu_god" = "God",
"ord_comu_tbl" = "Tables",
"fic_comu_njt" = "Ninja Turtles",
"spn_comu_cha" = "Chaikoni\n(invisible magic humans)",
"sci_comu_cnc" = "Cancer"),
title = "Peruvian Amazon V1: Can people communicate with __?")
# Version 2 -- 19 participants
yn_stacked_bar(country = "Peru", version = 2,
cols = c("sci_comu_grm", "nas_comu_ron", "ord_comu_taz", "spn_comu_oni",
"fic_comu_smn", "nas_comu_dlp"),
col_names = c("sci_comu_grm" = "Germs",
"nas_comu_ron" = "Ronin\n(Anaconda)",
"ord_comu_taz" = "Coffee Mug",
"spn_comu_oni" = "Oni Ibo\n(good spirit)",
"fic_comu_smn" = "Superman",
"nas_comu_dlp" = "Joshin Kokoshka\n(pink river dolphin)"),
title = "Peruvian Amazon V2: Can people communicate with __?")
# Both versions together
yn_by_category(country = "Peru",
cols = c("spn_comu_ysh", "sci_comu_par", "spn_comu_god", "ord_comu_tbl",
"fic_comu_njt", "spn_comu_cha", "sci_comu_cnc",
"sci_comu_grm", "nas_comu_ron", "ord_comu_taz", "spn_comu_oni",
"fic_comu_smn", "nas_comu_dlp"),
category_mapping = c("spn_comu_ysh" = "Supernatural",
"sci_comu_par" = "Scientific",
"spn_comu_god" = "Supernatural",
"ord_comu_tbl" = "Ordinary",
"fic_comu_njt" = "Fictional",
"spn_comu_cha" = "Supernatural",
"sci_comu_cnc" = "Scientific",
"sci_comu_grm" = "Scientific",
"nas_comu_ron" = "Supernatural",
"ord_comu_taz" = "Ordinary",
"spn_comu_oni" = "Supernatural",
"fic_comu_smn" = "Fictional",
"nas_comu_dlp" = "Supernatural"),
title = "Peruvian Amazon: Can people communicate with __?"
)
spexp_stacked_bar(country = "US", version = 1,
cols = c("sci_spexp_grm", "spn_spexp_dem", "ord_spexp_mug", "sci_spexp_gvt", "fic_spexp_smn"),
col_names = c("sci_spexp_grm" = "Germs",
"spn_spexp_dem" = "Demons",
"ord_spexp_mug" = "Coffee Mugs",
"sci_spexp_gvt" = "Gravity",
"fic_spexp_smn" = "Superman"),
title = "US V1: Can __ be experienced by anyone or only by specific people?")
# Version 2 -- 28 participants
spexp_stacked_bar(country = "US", version = 2,
cols = c("sci_spexp_cnc", "spn_spexp_god", "ord_spexp_tbl", "spn_spexp_ghs", "fic_spexp_hap"),
col_names = c("sci_spexp_cnc" = "Cancer",
"spn_spexp_god" = "God",
"ord_spexp_tbl" = "Tables",
"spn_spexp_ghs" = "Ghosts",
"fic_spexp_hap" = "Harry Potter"),
title = "US V2: Can __ be experienced by anyone or only by specific people?")
# Both versions together
spexp_by_category(country = "US",
cols = c("sci_spexp_grm", "spn_spexp_dem", "ord_spexp_mug", "sci_spexp_gvt", "fic_spexp_smn",
"sci_spexp_cnc", "spn_spexp_god", "ord_spexp_tbl", "spn_spexp_ghs", "fic_spexp_hap"),
category_mapping = c("sci_spexp_grm" = "Scientific",
"spn_spexp_dem" = "Supernatural",
"ord_spexp_mug" = "Ordinary",
"sci_spexp_gvt" = "Scientific",
"fic_spexp_smn" = "Fictional",
"sci_spexp_cnc" = "Scientific",
"spn_spexp_god" = "Supernatural",
"ord_spexp_tbl" = "Ordinary",
"spn_spexp_ghs" = "Supernatural",
"fic_spexp_hap" = "Fictional"),
title = "US: Can __ be experienced by anyone or only by specific people?"
)
This question was not asked in Ghana
# Version 1 -- 10 participants
spexp_stacked_bar(country = "Ecuador", version = 1,
cols = c("sci_spexp_flu", "spn_spexp_wen", "ord_spexp_mug", "sci_spexp_par", "fic_spexp_spd"),
col_names = c("sci_spexp_flu" = "Daicawo (flu)",
"spn_spexp_wen" = "Wene\n(demon/forest god)",
"ord_spexp_mug" = "Coffee Mugs",
"sci_spexp_par" = "Intestinal Parasites",
"fic_spexp_spd" = "Spiderman"),
title = "Ecuadorian Amazon V1: Can __ be experienced by anyone or only by specific people?")
# Version 2 -- 10 participants
spexp_stacked_bar(country = "Ecuador", version = 2,
cols = c("sci_spexp_cnc", "spn_spexp_god", "ord_spexp_tbl", "spn_spexp_okw", "fic_spexp_ram"),
col_names = c("sci_spexp_cnc" = "Cancer",
"spn_spexp_god" = "God",
"ord_spexp_tbl" = "Tables",
"spn_spexp_okw" = "Onokawa\n(ghost)",
"fic_spexp_ram" = "Rambo"),
title = "Ecuadorian Amazon V2: Can __ be experienced by anyone or only by specific people?")
# Both versions together
spexp_by_category(country = "Ecuador",
cols = c("sci_spexp_flu", "spn_spexp_wen", "ord_spexp_mug", "sci_spexp_par", "fic_spexp_spd",
"sci_spexp_cnc", "spn_spexp_god", "ord_spexp_tbl", "spn_spexp_okw", "fic_spexp_ram"),
category_mapping = c("sci_spexp_flu" = "Scientific",
"spn_spexp_wen" = "Supernatural",
"ord_spexp_mug" = "Ordinary",
"sci_spexp_par" = "Scientific",
"fic_spexp_spd" = "Fictional",
"sci_spexp_cnc" = "Scientific",
"spn_spexp_god" = "Supernatural",
"ord_spexp_tbl" = "Ordinary",
"spn_spexp_okw" = "Supernatural",
"fic_spexp_ram" = "Fictional"),
title = "Ecuadorian Amazon: Can __ be experienced by anyone or only by specific people?"
)
# Version 1 -- 21 participants
spexp_stacked_bar(country = "Peru", version = 1,
cols = c("spn_spexp_ysh", "sci_spexp_par", "spn_spexp_god", "ord_spexp_tbl",
"fic_spexp_njt", "spn_spexp_cha", "sci_spexp_cnc"),
col_names = c("spn_spexp_ysh" = "Mahua Yoshin\n(bad spirit)",
"sci_spexp_par" = "Intestinal Parasites",
"spn_spexp_god" = "God",
"ord_spexp_tbl" = "Tables",
"fic_spexp_njt" = "Ninja Turtles",
"spn_spexp_cha" = "Chaikoni\n(invisible magic humans)",
"sci_spexp_cnc" = "Cancer"),
title = "Peruvian Amazon V1: Can __ be experienced by anyone or only by specific people?")
# Version 2 -- 19 participants
spexp_stacked_bar(country = "Peru", version = 2,
cols = c("sci_spexp_grm", "nas_spexp_ron", "ord_spexp_taz", "spn_spexp_oni",
"fic_spexp_smn", "nas_spexp_dlp"),
col_names = c("sci_spexp_grm" = "Germs",
"nas_spexp_ron" = "Ronin\n(Anaconda)",
"ord_spexp_taz" = "Coffee Mug",
"spn_spexp_oni" = "Oni Ibo\n(good spirit)",
"fic_spexp_smn" = "Superman",
"nas_spexp_dlp" = "Joshin Kokoshka\n(pink river dolphin)"),
title = "Peruvian Amazon V2: Can __ be experienced by anyone or only by specific people?")
# Both versions together
spexp_by_category(country = "Peru",
cols = c("spn_spexp_ysh", "sci_spexp_par", "spn_spexp_god", "ord_spexp_tbl",
"fic_spexp_njt", "spn_spexp_cha", "sci_spexp_cnc",
"sci_spexp_grm", "nas_spexp_ron", "ord_spexp_taz", "spn_spexp_oni",
"fic_spexp_smn", "nas_spexp_dlp"),
category_mapping = c("spn_spexp_ysh" = "Supernatural",
"sci_spexp_par" = "Scientific",
"spn_spexp_god" = "Supernatural",
"ord_spexp_tbl" = "Ordinary",
"fic_spexp_njt" = "Fictional",
"spn_spexp_cha" = "Supernatural",
"sci_spexp_cnc" = "Scientific",
"sci_spexp_grm" = "Scientific",
"nas_spexp_ron" = "Supernatural",
"ord_spexp_taz" = "Ordinary",
"spn_spexp_oni" = "Supernatural",
"fic_spexp_smn" = "Fictional",
"nas_spexp_dlp" = "Supernatural"),
title = "Peruvian Amazon: Can __ be experienced by anyone or only by specific people?"
)
# Just version 1 questions--there are 21 participants
exist_bar(country = "US", version = 1,
cols = c("sens_grm", "sens_dem", "sens_mug", "sens_gvt", "sens_smn"),
col_names = c("sens_grm" = "Germs",
"sens_dem" = "Demons",
"sens_mug" = "Coffee Mugs",
"sens_gvt" = "Gravity",
"sens_smn" = "Superman"),
title = "US Version 1--Can __ be sensed?",
data = df_sens)
# Version 2 -- 28 participants
exist_bar(country = "US", version = 2,
cols = c("sens_cnc", "sens_god", "sens_tbl", "sens_ghs", "sens_hap"),
col_names = c("sens_cnc" = "Cancer",
"sens_god" = "God",
"sens_tbl" = "Tables",
"sens_ghs" = "Ghosts",
"sens_hap" = "Harry Potter"),
title = "US Version 2--Can __ be sensed?",
data = df_sens)
#-----------------------------------------
## BOTH VERSIONS COMBINED BY QUESTION TYPE
us_sens_combined <- df_sens %>%
filter(ont_ctry_name == "US") %>%
select(sens_grm, sens_dem, sens_mug, sens_gvt, sens_smn,
sens_cnc, sens_god, sens_tbl, sens_ghs, sens_hap) %>%
mutate(across(everything(), as.numeric)) %>%
pivot_longer(everything(), names_to = "question", values_to = "response") %>%
mutate(
question_type = recode(question,
sens_grm = "Scientific",
sens_gvt = "Scientific",
sens_cnc = "Scientific",
sens_mug = "Ordinary",
sens_tbl = "Ordinary",
sens_god = "Supernatural",
sens_dem = "Supernatural",
sens_ghs = "Supernatural",
sens_hap = "Fictional",
sens_smn = "Fictional")
) %>%
filter(!is.na(response)) %>%
group_by(question_type) %>%
summarise(
yes_count = sum(response == 1),
total_count = n(),
proportion_yes = yes_count / total_count
) %>%
arrange(desc(proportion_yes)) # Order by proportion
# Create bar plot
us_sens_combined %>%
ggplot(aes(x = reorder(question_type, -proportion_yes), y = proportion_yes, fill = question_type)) +
geom_col(width = 0.8) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_fill_brewer(palette = "Set2") +
theme_bw() +
theme(legend.position = "none") + # Removes the legend
geom_text(aes(label = scales::percent(proportion_yes, accuracy = 1)), # Add text on the bars
position = position_stack(vjust = 0.5), color = "white", size = 5) + # Adjust text appearance
labs(
title = "US: Can __ be sensed?--Proportion of 'Yes' Responses by Question Type",
x = "Question Type",
y = "Proportion of 'Yes' Responses")
# Version 1 -- 35 participants
exist_bar(country = "Ghana", version = 1,
cols = c("sens_grm", "sens_dem", "sens_mug", "sens_frc", "sens_smn"),
col_names = c("sens_grm" = "Germs",
"sens_dem" = "Demons",
"sens_mug" = "Coffee Mugs",
"sens_frc" = "Force",
"sens_smn" = "Superman"),
title = "Ghana Version 1--Can __ be sensed?",
data = df_sens)
# Version 2 -- 35 participants
exist_bar(country = "Ghana", version = 2,
cols = c("sens_cnc", "sens_god", "sens_tbl", "sens_abs", "sens_kwk"),
col_names = c("sens_cnc" = "Cancer",
"sens_god" = "God",
"sens_tbl" = "Tables",
"sens_abs" = "Abosom (small god)",
"sens_kwk" = "Kweku Ananse (fic. char.)"),
title = "Ghana Version 2--Can __ be sensed?",
data = df_sens)
#----------------------
## BOTH VERSIONS COMBINED BY QUESTION TYPE
gh_sens_combined <- df_sens %>%
filter(ont_ctry_name == "Ghana") %>%
select(sens_grm, sens_dem, sens_mug, sens_frc, sens_smn,
sens_cnc, sens_god, sens_tbl, sens_abs, sens_kwk) %>%
mutate(across(everything(), as.numeric)) %>%
pivot_longer(everything(), names_to = "question", values_to = "response") %>%
mutate(
question_type = recode(question,
sens_grm = "Scientific",
sens_frc = "Scientific",
sens_cnc = "Scientific",
sens_mug = "Ordinary",
sens_tbl = "Ordinary",
sens_god = "Supernatural",
sens_dem = "Supernatural",
sens_abs = "Supernatural",
sens_kwk = "Fictional",
sens_smn = "Fictional")
) %>%
filter(!is.na(response)) %>%
group_by(question_type) %>%
summarise(
yes_count = sum(response == 1),
total_count = n(),
proportion_yes = yes_count / total_count
) %>%
arrange(desc(proportion_yes)) # Order by proportion
# Create bar plot
gh_sens_combined %>%
ggplot(aes(x = reorder(question_type, -proportion_yes), y = proportion_yes, fill = question_type)) +
geom_col(width = 0.8) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_fill_brewer(palette = "Set2") +
theme_bw() +
theme(legend.position = "none") + # Removes the legend
geom_text(aes(label = scales::percent(proportion_yes, accuracy = 1)), # Add text on the bars
position = position_stack(vjust = 0.5), color = "white", size = 5) + # Adjust text appearance
labs(
title = "Ghana: Can __ be sensed?--Proportion of 'Yes' Responses by Question Type",
x = "Question Type",
y = "Proportion of 'Yes' Responses")
# Version 1 -- 10 participants
exist_bar(country = "Ecuador", version = 1,
cols = c("sens_flu", "sens_wen", "sens_mug", "sens_par", "sens_spd"),
col_names = c("sens_flu" = "Daicawo (flu)",
"sens_wen" = "Wene (demon/forest god)",
"sens_mug" = "Coffee Mugs",
"sens_par" = "Intestinal Parasites",
"sens_spd" = "Spiderman"),
title = "Ecuadorian Amazon Version 1--Can __ be sensed?",
data = df_sens)
# Version 2 -- 10 participants
exist_bar(country = "Ecuador", version = 2,
cols = c("sens_cnc", "sens_god", "sens_tbl", "sens_okw", "sens_ram"),
col_names = c("sens_cnc" = "Cancer",
"sens_god" = "God",
"sens_tbl" = "Tables",
"sens_okw" = "Onokawa (ghost)",
"sens_ram" = "Rambo"),
title = "Ecuadorian Amazon Version 2--Can __ be sensed?",
data = df_sens)
#----------------------
## BOTH VERSIONS COMBINED BY QUESTION TYPE
ec_sens_combined <- df_sens %>%
filter(ont_ctry_name == "Ecuador") %>%
select(sens_flu, sens_wen, sens_mug, sens_par, sens_spd,
sens_cnc, sens_god, sens_tbl, sens_okw, sens_ram) %>%
mutate(across(everything(), as.numeric)) %>%
pivot_longer(everything(), names_to = "question", values_to = "response") %>%
mutate(
question_type = recode(question,
sens_flu = "Scientific",
sens_par = "Scientific",
sens_cnc = "Scientific",
sens_mug = "Ordinary",
sens_tbl = "Ordinary",
sens_god = "Supernatural",
sens_wen = "Supernatural",
sens_okw = "Supernatural",
sens_spd = "Fictional",
sens_ram = "Fictional")
) %>%
filter(!is.na(response)) %>%
group_by(question_type) %>%
summarise(
yes_count = sum(response == 1),
total_count = n(),
proportion_yes = yes_count / total_count
) %>%
arrange(desc(proportion_yes)) # Order by proportion
# Create bar plot
ec_sens_combined %>%
ggplot(aes(x = reorder(question_type, -proportion_yes), y = proportion_yes, fill = question_type)) +
geom_col(width = 0.8) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_fill_brewer(palette = "Set2") +
theme_bw() +
theme(legend.position = "none") + # Removes the legend
geom_text(aes(label = scales::percent(proportion_yes, accuracy = 1)), # Add text on the bars
position = position_stack(vjust = 0.5), color = "white", size = 5) + # Adjust text appearance
labs(
title = "Ecuadorian Amazon:Can __ be sensed?--Proportion of 'Yes' Responses by Question Type",
x = "Question Type",
y = "Proportion of 'Yes' Responses")
# Version 1 -- 21 participants
exist_bar(country = "Peru", version = 1,
cols = c("sens_ysh", "sens_par", "sens_god", "sens_tbl", "sens_njt", "sens_cha", "sens_cnc"),
col_names = c("sens_ysh" = "Mahua Yoshin\n(bad spirit)",
"sens_par" = "Intestinal Parasites",
"sens_god" = "God",
"sens_tbl" = "Tables",
"sens_njt" = "Ninja Turtles",
"sens_cha" = "Chaikoni\n(invisible magic humans)",
"sens_cnc" = "Cancer"),
title = "Peruvian Amazon Version 1--Can __ be sensed?",
data = df_sens)
# Version 2 -- 19 participants
exist_bar(country = "Peru", version = 2,
cols = c("sens_grm", "sens_ron", "sens_taz", "sens_oni", "sens_smn", "sens_dlp"),
col_names = c("sens_grm" = "Germs",
"sens_ron" = "Ronin\n(Anaconda)",
"sens_taz" = "Coffee Mug",
"sens_oni" = "Oni Ibo\n(good spirit)",
"sens_smn" = "Superman",
"sens_dlp" = "Joshin Kokoshka\n(pink river dolphin)"),
title = "Peruvian Amazon Version 2--Can __ be sensed?",
data = df_sens)
#----------------------
# BOTH VERSIONS COMBINED
peru_sens_combined <- df_sens %>%
filter(ont_ctry_name == "Peru") %>%
select(sens_ysh, sens_par, sens_god, sens_tbl, sens_njt, sens_cha, sens_cnc,
sens_grm, sens_ron, sens_taz, sens_oni, sens_smn, sens_dlp) %>%
mutate(across(everything(), as.numeric)) %>%
pivot_longer(everything(), names_to = "question", values_to = "response") %>%
mutate(
question_type = recode(question,
sens_par = "Scientific",
sens_cnc = "Scientific",
sens_grm = "Scientific",
sens_taz = "Ordinary",
sens_tbl = "Ordinary",
sens_ysh = "Supernatural",
sens_god = "Supernatural",
sens_cha = "Supernatural",
sens_ron = "Supernatural",
sens_oni = "Supernatural",
sens_dlp = "Supernatural",
sens_njt = "Fictional",
sens_smn = "Fictional")
) %>%
filter(!is.na(response)) %>%
group_by(question_type) %>%
summarise(
yes_count = sum(response == 1),
total_count = n(),
proportion_yes = yes_count / total_count
) %>%
arrange(desc(proportion_yes)) # Order by proportion
# Create bar plot
peru_sens_combined %>%
ggplot(aes(x = reorder(question_type, -proportion_yes), y = proportion_yes, fill = question_type)) +
geom_col(width = 0.8) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_fill_brewer(palette = "Set2") +
theme_bw() +
theme(legend.position = "none") + # Removes the legend
geom_text(aes(label = scales::percent(proportion_yes, accuracy = 1)), # Add text on the bars
position = position_stack(vjust = 0.5), color = "white", size = 5) + # Adjust text appearance
labs(
title = "Ecuadorian Amazon:Can __ be sensed?--Proportion of 'Yes' Responses by Question Type",
x = "Question Type",
y = "Proportion of 'Yes' Responses")
# Just version 1 questions--there are 21 participants
exist_bar(country = "US", version = 1,
cols = c("usens_grm", "usens_dem", "usens_mug", "usens_gvt", "usens_smn"),
col_names = c("usens_grm" = "Germs",
"usens_dem" = "Demons",
"usens_mug" = "Coffee Mugs",
"usens_gvt" = "Gravity",
"usens_smn" = "Superman"),
title = "US Version 1--Have you ever sensed __?",
data = df_usens)
# Version 2 -- 28 participants
exist_bar(country = "US", version = 2,
cols = c("usens_cnc", "usens_god", "usens_tbl", "usens_ghs", "usens_hap"),
col_names = c("usens_cnc" = "Cancer",
"usens_god" = "God",
"usens_tbl" = "Tables",
"usens_ghs" = "Ghosts",
"usens_hap" = "Harry Potter"),
title = "US Version 2--Have you ever sensed __?",
data = df_usens)
#-----------------------------------------
## BOTH VERSIONS COMBINED BY QUESTION TYPE
us_usens_combined <- df_usens %>%
filter(ont_ctry_name == "US") %>%
select(usens_grm, usens_dem, usens_mug, usens_gvt, usens_smn,
usens_cnc, usens_god, usens_tbl, usens_ghs, usens_hap) %>%
mutate(across(everything(), as.numeric)) %>%
pivot_longer(everything(), names_to = "question", values_to = "response") %>%
mutate(
question_type = recode(question,
usens_grm = "Scientific",
usens_gvt = "Scientific",
usens_cnc = "Scientific",
usens_mug = "Ordinary",
usens_tbl = "Ordinary",
usens_god = "Supernatural",
usens_dem = "Supernatural",
usens_ghs = "Supernatural",
usens_hap = "Fictional",
usens_smn = "Fictional")
) %>%
filter(!is.na(response)) %>%
group_by(question_type) %>%
summarise(
yes_count = sum(response == 1),
total_count = n(),
proportion_yes = yes_count / total_count
) %>%
arrange(desc(proportion_yes)) # Order by proportion
# Create bar plot
us_usens_combined %>%
ggplot(aes(x = reorder(question_type, -proportion_yes), y = proportion_yes, fill = question_type)) +
geom_col(width = 0.8) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_fill_brewer(palette = "Set2") +
theme_bw() +
theme(legend.position = "none") + # Removes the legend
geom_text(aes(label = scales::percent(proportion_yes, accuracy = 1)), # Add text on the bars
position = position_stack(vjust = 0.5), color = "white", size = 5) + # Adjust text appearance
labs(
title = "US: Have you ever sensed __?--Proportion of 'Yes' Responses by Question Type",
x = "Question Type",
y = "Proportion of 'Yes' Responses")
# Version 1 -- 35 participants
exist_bar(country = "Ghana", version = 1,
cols = c("usens_grm", "usens_dem", "usens_mug", "usens_frc", "usens_smn"),
col_names = c("usens_grm" = "Germs",
"usens_dem" = "Demons",
"usens_mug" = "Coffee Mugs",
"usens_frc" = "Force",
"usens_smn" = "Superman"),
title = "Ghana Version 1--Have you ever sensed __?",
data = df_usens)
# Version 2 -- 35 participants
exist_bar(country = "Ghana", version = 2,
cols = c("usens_cnc", "usens_god", "usens_tbl", "usens_abs", "usens_kwk"),
col_names = c("usens_cnc" = "Cancer",
"usens_god" = "God",
"usens_tbl" = "Tables",
"usens_abs" = "Abosom (small god)",
"usens_kwk" = "Kweku Ananse (fic. char.)"),
title = "Ghana Version 2--Have you ever sensed __?",
data = df_usens)
#----------------------
## BOTH VERSIONS COMBINED BY QUESTION TYPE
gh_usens_combined <- df_usens %>%
filter(ont_ctry_name == "Ghana") %>%
select(usens_grm, usens_dem, usens_mug, usens_frc, usens_smn,
usens_cnc, usens_god, usens_tbl, usens_abs, usens_kwk) %>%
mutate(across(everything(), as.numeric)) %>%
pivot_longer(everything(), names_to = "question", values_to = "response") %>%
mutate(
question_type = recode(question,
usens_grm = "Scientific",
usens_frc = "Scientific",
usens_cnc = "Scientific",
usens_mug = "Ordinary",
usens_tbl = "Ordinary",
usens_god = "Supernatural",
usens_dem = "Supernatural",
usens_abs = "Supernatural",
usens_kwk = "Fictional",
usens_smn = "Fictional")
) %>%
filter(!is.na(response)) %>%
group_by(question_type) %>%
summarise(
yes_count = sum(response == 1),
total_count = n(),
proportion_yes = yes_count / total_count
) %>%
arrange(desc(proportion_yes)) # Order by proportion
# Create bar plot
gh_usens_combined %>%
ggplot(aes(x = reorder(question_type, -proportion_yes), y = proportion_yes, fill = question_type)) +
geom_col(width = 0.8) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_fill_brewer(palette = "Set2") +
theme_bw() +
theme(legend.position = "none") + # Removes the legend
geom_text(aes(label = scales::percent(proportion_yes, accuracy = 1)), # Add text on the bars
position = position_stack(vjust = 0.5), color = "white", size = 5) + # Adjust text appearance
labs(
title = "Ghana: Have you ever sensed __?--Proportion of 'Yes' Responses by Question Type",
x = "Question Type",
y = "Proportion of 'Yes' Responses")
# Version 1 -- 10 participants
exist_bar(country = "Ecuador", version = 1,
cols = c("usens_flu", "usens_wen", "usens_mug", "usens_par", "usens_spd"),
col_names = c("usens_flu" = "Daicawo (flu)",
"usens_wen" = "Wene (demon/forest god)",
"usens_mug" = "Coffee Mugs",
"usens_par" = "Intestinal Parasites",
"usens_spd" = "Spiderman"),
title = "Ecuadorian Amazon Version 1--Have you ever sensed __?",
data = df_usens)
# Version 2 -- 10 participants
exist_bar(country = "Ecuador", version = 2,
cols = c("usens_cnc", "usens_god", "usens_tbl", "usens_okw", "usens_ram"),
col_names = c("usens_cnc" = "Cancer",
"usens_god" = "God",
"usens_tbl" = "Tables",
"usens_okw" = "Onokawa (ghost)",
"usens_ram" = "Rambo"),
title = "Ecuadorian Amazon Version 2--Have you ever sensed __?",
data = df_usens)
#----------------------
## BOTH VERSIONS COMBINED BY QUESTION TYPE
ec_usens_combined <- df_usens %>%
filter(ont_ctry_name == "Ecuador") %>%
select(usens_flu, usens_wen, usens_mug, usens_par, usens_spd,
usens_cnc, usens_god, usens_tbl, usens_okw, usens_ram) %>%
mutate(across(everything(), as.numeric)) %>%
pivot_longer(everything(), names_to = "question", values_to = "response") %>%
mutate(
question_type = recode(question,
usens_flu = "Scientific",
usens_par = "Scientific",
usens_cnc = "Scientific",
usens_mug = "Ordinary",
usens_tbl = "Ordinary",
usens_god = "Supernatural",
usens_wen = "Supernatural",
usens_okw = "Supernatural",
usens_spd = "Fictional",
usens_ram = "Fictional")
) %>%
filter(!is.na(response)) %>%
group_by(question_type) %>%
summarise(
yes_count = sum(response == 1),
total_count = n(),
proportion_yes = yes_count / total_count
) %>%
arrange(desc(proportion_yes)) # Order by proportion
# Create bar plot
ec_usens_combined %>%
ggplot(aes(x = reorder(question_type, -proportion_yes), y = proportion_yes, fill = question_type)) +
geom_col(width = 0.8) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_fill_brewer(palette = "Set2") +
theme_bw() +
theme(legend.position = "none") + # Removes the legend
geom_text(aes(label = scales::percent(proportion_yes, accuracy = 1)), # Add text on the bars
position = position_stack(vjust = 0.5), color = "white", size = 5) + # Adjust text appearance
labs(
title = "Ecuadorian Amazon:Have you ever sensed __?--Proportion of 'Yes' Responses by Question Type",
x = "Question Type",
y = "Proportion of 'Yes' Responses")
# Version 1 -- 21 participants
exist_bar(country = "Peru", version = 1,
cols = c("usens_ysh", "usens_par", "usens_god", "usens_tbl", "usens_njt", "usens_cha", "usens_cnc"),
col_names = c("usens_ysh" = "Mahua Yoshin\n(bad spirit)",
"usens_par" = "Intestinal Parasites",
"usens_god" = "God",
"usens_tbl" = "Tables",
"usens_njt" = "Ninja Turtles",
"usens_cha" = "Chaikoni\n(invisible magic humans)",
"usens_cnc" = "Cancer"),
title = "Peruvian Amazon Version 1--Have you ever sensed __?",
data = df_usens)
# Version 2 -- 19 participants
exist_bar(country = "Peru", version = 2,
cols = c("usens_grm", "usens_ron", "usens_taz", "usens_oni", "usens_smn", "usens_dlp"),
col_names = c("usens_grm" = "Germs",
"usens_ron" = "Ronin\n(Anaconda)",
"usens_taz" = "Coffee Mug",
"usens_oni" = "Oni Ibo\n(good spirit)",
"usens_smn" = "Superman",
"usens_dlp" = "Joshin Kokoshka\n(pink river dolphin)"),
title = "Peruvian Amazon Version 2--Have you ever sensed __?",
data = df_usens)
#----------------------
# BOTH VERSIONS COMBINED
peru_usens_combined <- df_usens %>%
filter(ont_ctry_name == "Peru") %>%
select(usens_ysh, usens_par, usens_god, usens_tbl, usens_njt, usens_cha, usens_cnc,
usens_grm, usens_ron, usens_taz, usens_oni, usens_smn, usens_dlp) %>%
mutate(across(everything(), as.numeric)) %>%
pivot_longer(everything(), names_to = "question", values_to = "response") %>%
mutate(
question_type = recode(question,
usens_par = "Scientific",
usens_cnc = "Scientific",
usens_grm = "Scientific",
usens_taz = "Ordinary",
usens_tbl = "Ordinary",
usens_ysh = "Supernatural",
usens_god = "Supernatural",
usens_cha = "Supernatural",
usens_ron = "Supernatural",
usens_oni = "Supernatural",
usens_dlp = "Supernatural",
usens_njt = "Fictional",
usens_smn = "Fictional")
) %>%
filter(!is.na(response)) %>%
group_by(question_type) %>%
summarise(
yes_count = sum(response == 1),
total_count = n(),
proportion_yes = yes_count / total_count
) %>%
arrange(desc(proportion_yes)) # Order by proportion
# Create bar plot
peru_usens_combined %>%
ggplot(aes(x = reorder(question_type, -proportion_yes), y = proportion_yes, fill = question_type)) +
geom_col(width = 0.8) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_fill_brewer(palette = "Set2") +
theme_bw() +
theme(legend.position = "none") + # Removes the legend
geom_text(aes(label = scales::percent(proportion_yes, accuracy = 1)), # Add text on the bars
position = position_stack(vjust = 0.5), color = "white", size = 5) + # Adjust text appearance
labs(
title = "Ecuadorian Amazon:Have you ever sensed __?--Proportion of 'Yes' Responses by Question Type",
x = "Question Type",
y = "Proportion of 'Yes' Responses")